[INFO] cloning repository https://github.com/thehalleyyoung/algo-collusion-certifier
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/thehalleyyoung/algo-collusion-certifier" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthehalleyyoung%2Falgo-collusion-certifier", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthehalleyyoung%2Falgo-collusion-certifier'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] aa10cb2a53c62611ee4264f620b7216797b12033
[INFO] checking thehalleyyoung/algo-collusion-certifier against try#a611f2a14e38407ec6717a86a01424ee6fc80762 for pr-154992-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthehalleyyoung%2Falgo-collusion-certifier" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  22% (1520/6850)
Updating files:  23% (1576/6850)
Updating files:  23% (1636/6850)
Updating files:  24% (1644/6850)
Updating files:  25% (1713/6850)
Updating files:  26% (1781/6850)
Updating files:  27% (1850/6850)
Updating files:  28% (1918/6850)
Updating files:  29% (1987/6850)
Updating files:  29% (2032/6850)
Updating files:  30% (2055/6850)
Updating files:  31% (2124/6850)
Updating files:  32% (2192/6850)
Updating files:  33% (2261/6850)
Updating files:  34% (2329/6850)
Updating files:  35% (2398/6850)
Updating files:  36% (2466/6850)
Updating files:  37% (2535/6850)
Updating files:  38% (2603/6850)
Updating files:  39% (2672/6850)
Updating files:  40% (2740/6850)
Updating files:  41% (2809/6850)
Updating files:  42% (2877/6850)
Updating files:  43% (2946/6850)
Updating files:  44% (3014/6850)
Updating files:  45% (3083/6850)
Updating files:  46% (3151/6850)
Updating files:  46% (3173/6850)
Updating files:  47% (3220/6850)
Updating files:  48% (3288/6850)
Updating files:  49% (3357/6850)
Updating files:  50% (3425/6850)
Updating files:  51% (3494/6850)
Updating files:  52% (3562/6850)
Updating files:  53% (3631/6850)
Updating files:  54% (3699/6850)
Updating files:  54% (3732/6850)
Updating files:  55% (3768/6850)
Updating files:  56% (3836/6850)
Updating files:  56% (3844/6850)
Updating files:  57% (3905/6850)
Updating files:  58% (3973/6850)
Updating files:  59% (4042/6850)
Updating files:  60% (4110/6850)
Updating files:  61% (4179/6850)
Updating files:  62% (4247/6850)
Updating files:  63% (4316/6850)
Updating files:  63% (4362/6850)
Updating files:  64% (4384/6850)
Updating files:  65% (4453/6850)
Updating files:  66% (4521/6850)
Updating files:  67% (4590/6850)
Updating files:  68% (4658/6850)
Updating files:  69% (4727/6850)
Updating files:  70% (4795/6850)
Updating files:  71% (4864/6850)
Updating files:  72% (4932/6850)
Updating files:  73% (5001/6850)
Updating files:  74% (5069/6850)
Updating files:  75% (5138/6850)
Updating files:  76% (5206/6850)
Updating files:  76% (5230/6850)
Updating files:  77% (5275/6850)
Updating files:  78% (5343/6850)
Updating files:  79% (5412/6850)
Updating files:  80% (5480/6850)
Updating files:  81% (5549/6850)
Updating files:  82% (5617/6850)
Updating files:  83% (5686/6850)
Updating files:  84% (5754/6850)
Updating files:  85% (5823/6850)
Updating files:  86% (5891/6850)
Updating files:  87% (5960/6850)
Updating files:  88% (6028/6850)
Updating files:  89% (6097/6850)
Updating files:  90% (6165/6850)
Updating files:  91% (6234/6850)
Updating files:  92% (6302/6850)
Updating files:  93% (6371/6850)
Updating files:  94% (6439/6850)
Updating files:  94% (6498/6850)
Updating files:  95% (6508/6850)
Updating files:  96% (6576/6850)
Updating files:  97% (6645/6850)
Updating files:  97% (6667/6850)
Updating files:  98% (6713/6850)
Updating files:  98% (6738/6850)
Updating files:  99% (6782/6850)
Updating files: 100% (6850/6850)
Updating files: 100% (6850/6850), done.
[INFO] started tweaking git repo https://github.com/thehalleyyoung/algo-collusion-certifier
[INFO] finished tweaking git repo https://github.com/thehalleyyoung/algo-collusion-certifier
[INFO] tweaked toml for git repo https://github.com/thehalleyyoung/algo-collusion-certifier written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/thehalleyyoung/algo-collusion-certifier on toolchain a611f2a14e38407ec6717a86a01424ee6fc80762
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/thehalleyyoung/algo-collusion-certifier 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" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c8257f1ae91faac85b15beab2b029fa44a8d11e8135eddb1c645b0e50e9757f0
[INFO] running `Command { std: "docker" "start" "-a" "c8257f1ae91faac85b15beab2b029fa44a8d11e8135eddb1c645b0e50e9757f0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c8257f1ae91faac85b15beab2b029fa44a8d11e8135eddb1c645b0e50e9757f0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c8257f1ae91faac85b15beab2b029fa44a8d11e8135eddb1c645b0e50e9757f0", kill_on_drop: false }`
[INFO] [stdout] c8257f1ae91faac85b15beab2b029fa44a8d11e8135eddb1c645b0e50e9757f0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 01c4aaa4aa9e46f18e362b1fb7fdb2768d62c72210ab4e8d7ba14161538e3267
[INFO] running `Command { std: "docker" "start" "-a" "01c4aaa4aa9e46f18e362b1fb7fdb2768d62c72210ab4e8d7ba14161538e3267", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]     Checking uuid v1.22.0
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]     Checking simba v0.6.0
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking simba v0.8.1
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling nalgebra-macros v0.1.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking clap v4.5.60
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking nalgebra v0.29.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking nalgebra v0.32.6
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking shared-types v0.1.0 (/opt/rustwide/workdir/implementation/crates/shared-types)
[INFO] [stdout] warning: unused import: `crate::statistics::TestStatistic`
[INFO] [stdout]    --> implementation/crates/shared-types/src/evidence.rs:443:9
[INFO] [stdout]     |
[INFO] [stdout] 443 |     use crate::statistics::TestStatistic;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Decisive` should have an upper case name
[INFO] [stdout]    --> implementation/crates/shared-types/src/evidence.rs:150:15
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub const Decisive: EvidenceStrength = EvidenceStrength::Definitive;
[INFO] [stdout]     |               ^^^^^^^^ help: convert the identifier to upper case: `DECISIVE`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Layer0` should have an upper case name
[INFO] [stdout]     --> implementation/crates/shared-types/src/types.rs:1031:15
[INFO] [stdout]      |
[INFO] [stdout] 1031 |     pub const Layer0: OracleAccessLevel = OracleAccessLevel::Layer0Passive;
[INFO] [stdout]      |               ^^^^^^ help: convert the identifier to upper case: `LAYER0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Layer1` should have an upper case name
[INFO] [stdout]     --> implementation/crates/shared-types/src/types.rs:1032:15
[INFO] [stdout]      |
[INFO] [stdout] 1032 |     pub const Layer1: OracleAccessLevel = OracleAccessLevel::Layer1Checkpoint;
[INFO] [stdout]      |               ^^^^^^ help: convert the identifier to upper case: `LAYER1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Layer2` should have an upper case name
[INFO] [stdout]     --> implementation/crates/shared-types/src/types.rs:1033:15
[INFO] [stdout]      |
[INFO] [stdout] 1033 |     pub const Layer2: OracleAccessLevel = OracleAccessLevel::Layer2FullRewind;
[INFO] [stdout]      |               ^^^^^^ help: convert the identifier to upper case: `LAYER2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Decisive` should have an upper case name
[INFO] [stdout]    --> implementation/crates/shared-types/src/evidence.rs:150:15
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub const Decisive: EvidenceStrength = EvidenceStrength::Definitive;
[INFO] [stdout]     |               ^^^^^^^^ help: convert the identifier to upper case: `DECISIVE`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Layer0` should have an upper case name
[INFO] [stdout]     --> implementation/crates/shared-types/src/types.rs:1031:15
[INFO] [stdout]      |
[INFO] [stdout] 1031 |     pub const Layer0: OracleAccessLevel = OracleAccessLevel::Layer0Passive;
[INFO] [stdout]      |               ^^^^^^ help: convert the identifier to upper case: `LAYER0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Layer1` should have an upper case name
[INFO] [stdout]     --> implementation/crates/shared-types/src/types.rs:1032:15
[INFO] [stdout]      |
[INFO] [stdout] 1032 |     pub const Layer1: OracleAccessLevel = OracleAccessLevel::Layer1Checkpoint;
[INFO] [stdout]      |               ^^^^^^ help: convert the identifier to upper case: `LAYER1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Layer2` should have an upper case name
[INFO] [stdout]     --> implementation/crates/shared-types/src/types.rs:1033:15
[INFO] [stdout]      |
[INFO] [stdout] 1033 |     pub const Layer2: OracleAccessLevel = OracleAccessLevel::Layer2FullRewind;
[INFO] [stdout]      |               ^^^^^^ help: convert the identifier to upper case: `LAYER2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking statrs v0.16.1
[INFO] [stderr]     Checking market-sim v0.1.0 (/opt/rustwide/workdir/implementation/crates/market-sim)
[INFO] [stderr]     Checking game-theory v0.1.0 (/opt/rustwide/workdir/implementation/crates/game-theory)
[INFO] [stdout] warning: unused import: `ordered_float::OrderedFloat`
[INFO] [stdout]  --> implementation/crates/game-theory/src/automaton.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use ordered_float::OrderedFloat;
[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: `BTreeMap` and `BTreeSet`
[INFO] [stdout]  --> implementation/crates/game-theory/src/automaton.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                        ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ordered_float::OrderedFloat`
[INFO] [stdout]  --> implementation/crates/game-theory/src/equilibrium.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ordered_float::OrderedFloat;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/game-theory/src/equilibrium.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> implementation/crates/game-theory/src/folk_theorem.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/game-theory/src/learning.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NashEquilibrium`
[INFO] [stdout]   --> implementation/crates/game-theory/src/repeated_game.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::equilibrium::{NashEquilibrium, PayoffMatrix, BertrandNashSolver, CournotNashSolver};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FeasiblePayoffSet`, `MinimaxComputation`, and `PunishmentStrategy`
[INFO] [stdout]   --> implementation/crates/game-theory/src/repeated_game.rs:13:27
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::folk_theorem::{FeasiblePayoffSet, MinimaxComputation, PunishmentStrategy};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AutomatonState`
[INFO] [stdout]  --> implementation/crates/game-theory/src/strategies.rs:6:95
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::automaton::{AutomatonBuilder, DiscretizedPrice, FiniteStateStrategy, MealyMachine, AutomatonState};
[INFO] [stdout]   |                                                                                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> implementation/crates/game-theory/src/strategies.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ordered_float::OrderedFloat`
[INFO] [stdout]  --> implementation/crates/game-theory/src/automaton.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use ordered_float::OrderedFloat;
[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: `BTreeMap` and `BTreeSet`
[INFO] [stdout]  --> implementation/crates/game-theory/src/automaton.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                        ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ordered_float::OrderedFloat`
[INFO] [stdout]  --> implementation/crates/game-theory/src/equilibrium.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ordered_float::OrderedFloat;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/game-theory/src/equilibrium.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> implementation/crates/game-theory/src/folk_theorem.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/game-theory/src/learning.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NashEquilibrium`
[INFO] [stdout]   --> implementation/crates/game-theory/src/repeated_game.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::equilibrium::{NashEquilibrium, PayoffMatrix, BertrandNashSolver, CournotNashSolver};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FeasiblePayoffSet`, `MinimaxComputation`, and `PunishmentStrategy`
[INFO] [stdout]   --> implementation/crates/game-theory/src/repeated_game.rs:13:27
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::folk_theorem::{FeasiblePayoffSet, MinimaxComputation, PunishmentStrategy};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlwaysDefect`, `GrimTriggerStrategy`, and `TitForTatStrategy`
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:760:29
[INFO] [stdout]     |
[INFO] [stdout] 760 |     use crate::strategies::{GrimTriggerStrategy, TitForTatStrategy, AlwaysDefect};
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AutomatonState`
[INFO] [stdout]  --> implementation/crates/game-theory/src/strategies.rs:6:95
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::automaton::{AutomatonBuilder, DiscretizedPrice, FiniteStateStrategy, MealyMachine, AutomatonState};
[INFO] [stdout]   |                                                                                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> implementation/crates/game-theory/src/strategies.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/game-theory/src/folk_theorem.rs:884:57
[INFO] [stdout]     |
[INFO] [stdout] 884 |         let mm = MinimaxComputation::from_payoff_matrix(&payoffs);
[INFO] [stdout]     |                  -------------------------------------- ^^^^^^^^ expected `&[Vec<Vec<f64>>]`, found `&Vec<Vec<{float}>>`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&[Vec<Vec<f64>>]`
[INFO] [stdout]                found reference `&Vec<Vec<{float}>>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/game-theory/src/folk_theorem.rs:296:12
[INFO] [stdout]     |
[INFO] [stdout] 296 |     pub fn from_payoff_matrix(payoffs: &[Vec<Vec<f64>>]) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ -------------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inp_val`
[INFO] [stdout]    --> implementation/crates/game-theory/src/automaton.rs:719:29
[INFO] [stdout]     |
[INFO] [stdout] 719 |                         let inp_val = inp as u32;
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inp_val`
[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_agents`
[INFO] [stdout]    --> implementation/crates/game-theory/src/c3_validator.rs:221:5
[INFO] [stdout]     |
[INFO] [stdout] 221 |     num_agents: usize,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_agents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> implementation/crates/game-theory/src/equilibrium.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let n = support.len();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:182:25
[INFO] [stdout]     |
[INFO] [stdout] 182 |                     let prices: Vec<f64> = config.marginal_costs.iter().map(|c| c.0).collect();
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iteration`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         for iteration in 0..self.max_iterations {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_iteration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:636:21
[INFO] [stdout]     |
[INFO] [stdout] 636 |                 let n = prices.len();
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> implementation/crates/game-theory/src/folk_theorem.rs:225:21
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 let n = config.num_players;
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avg_payoffs`
[INFO] [stdout]    --> implementation/crates/game-theory/src/folk_theorem.rs:513:9
[INFO] [stdout]     |
[INFO] [stdout] 513 |     let avg_payoffs: Vec<f64> = (0..n).map(|i| {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avg_payoffs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inp_val`
[INFO] [stdout]    --> implementation/crates/game-theory/src/automaton.rs:719:29
[INFO] [stdout]     |
[INFO] [stdout] 719 |                         let inp_val = inp as u32;
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inp_val`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_0`
[INFO] [stdout]    --> implementation/crates/game-theory/src/learning.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |         let var_0: f64 = dist_0.iter().enumerate().map(|(a, &p)| (a as f64 - mean_0).powi(2) * p).sum();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_var_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_1`
[INFO] [stdout]    --> implementation/crates/game-theory/src/learning.rs:477:13
[INFO] [stdout]     |
[INFO] [stdout] 477 |         let var_1: f64 = dist_1.iter().enumerate().map(|(a, &p)| (a as f64 - mean_1).powi(2) * p).sum();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_var_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `partition`
[INFO] [stdout]     --> implementation/crates/game-theory/src/automaton.rs:1085:21
[INFO] [stdout]      |
[INFO] [stdout] 1085 |         let (min_m, partition) = AutomatonMinimizer::minimize(&m);
[INFO] [stdout]      |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_partition`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_actions`
[INFO] [stdout]    --> implementation/crates/game-theory/src/learning.rs:508:9
[INFO] [stdout]     |
[INFO] [stdout] 508 |         num_actions: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_actions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_agents`
[INFO] [stdout]    --> implementation/crates/game-theory/src/c3_validator.rs:221:5
[INFO] [stdout]     |
[INFO] [stdout] 221 |     num_agents: usize,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_agents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payoff_collude`
[INFO] [stdout]    --> implementation/crates/game-theory/src/c3_validator.rs:347:13
[INFO] [stdout]     |
[INFO] [stdout] 347 |         let payoff_collude = compute_payoff_for_agent(0, 2, 4, &profile_collude);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payoff_collude`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payoff_deviate`
[INFO] [stdout]    --> implementation/crates/game-theory/src/c3_validator.rs:348:13
[INFO] [stdout]     |
[INFO] [stdout] 348 |         let payoff_deviate = compute_payoff_for_agent(0, 2, 4, &profile_deviate);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payoff_deviate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_linear_demand_box` is never used
[INFO] [stdout]    --> implementation/crates/market-sim/src/bertrand.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn make_linear_demand_box(a: f64, b: f64, c: f64, n: usize) -> Box<dyn DemandFunction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `others_avg`
[INFO] [stdout]    --> implementation/crates/game-theory/src/payoff.rs:290:25
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     let others_avg: f64 = if n > 1 {
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_others_avg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut pm = PayoffMatrix::new(vec![num_levels; n]);
[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_action`
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:149:14
[INFO] [stdout]     |
[INFO] [stdout] 149 |         let (best_action, best_payoff) = self.payoffs.best_response(player, &collusive_actions);
[INFO] [stdout]     |              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> implementation/crates/game-theory/src/equilibrium.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let n = support.len();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:182:25
[INFO] [stdout]     |
[INFO] [stdout] 182 |                     let prices: Vec<f64> = config.marginal_costs.iter().map(|c| c.0).collect();
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iteration`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         for iteration in 0..self.max_iterations {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_iteration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:636:21
[INFO] [stdout]     |
[INFO] [stdout] 636 |                 let n = prices.len();
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remaining`
[INFO] [stdout]    --> implementation/crates/game-theory/src/equilibrium.rs:994:23
[INFO] [stdout]     |
[INFO] [stdout] 994 |         let (reduced, remaining) = DominanceElimination::eliminate(&game);
[INFO] [stdout]     |                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remaining`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> implementation/crates/game-theory/src/folk_theorem.rs:225:21
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 let n = config.num_players;
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `round`
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:684:13
[INFO] [stdout]     |
[INFO] [stdout] 684 |         for round in 0..t {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_round`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avg_payoffs`
[INFO] [stdout]    --> implementation/crates/game-theory/src/folk_theorem.rs:513:9
[INFO] [stdout]     |
[INFO] [stdout] 513 |     let avg_payoffs: Vec<f64> = (0..n).map(|i| {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avg_payoffs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_0`
[INFO] [stdout]    --> implementation/crates/game-theory/src/learning.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |         let var_0: f64 = dist_0.iter().enumerate().map(|(a, &p)| (a as f64 - mean_0).powi(2) * p).sum();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_var_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_1`
[INFO] [stdout]    --> implementation/crates/game-theory/src/learning.rs:477:13
[INFO] [stdout]     |
[INFO] [stdout] 477 |         let var_1: f64 = dist_1.iter().enumerate().map(|(a, &p)| (a as f64 - mean_1).powi(2) * p).sum();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_var_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_actions`
[INFO] [stdout]    --> implementation/crates/game-theory/src/learning.rs:508:9
[INFO] [stdout]     |
[INFO] [stdout] 508 |         num_actions: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_actions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `others_avg`
[INFO] [stdout]    --> implementation/crates/game-theory/src/payoff.rs:290:25
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     let others_avg: f64 = if n > 1 {
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_others_avg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut pm = PayoffMatrix::new(vec![num_levels; n]);
[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_action`
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:149:14
[INFO] [stdout]     |
[INFO] [stdout] 149 |         let (best_action, best_payoff) = self.payoffs.best_response(player, &collusive_actions);
[INFO] [stdout]     |              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `round`
[INFO] [stdout]    --> implementation/crates/game-theory/src/repeated_game.rs:684:13
[INFO] [stdout]     |
[INFO] [stdout] 684 |         for round in 0..t {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_round`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking stat-tests v0.1.0 (/opt/rustwide/workdir/implementation/crates/stat-tests)
[INFO] [stderr]     Checking collusion-core v0.1.0 (/opt/rustwide/workdir/implementation/crates/collusion-core)
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `game-theory` (lib test) due to 1 previous error; 30 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/asymmetric.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::HashMap;
[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: `AlgorithmType`, `MarketType`, `PlayerAction`, `Profit`, and `Quantity`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/detector.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     AlgorithmType, CollusionError, CollusionResult, ConfidenceInterval, EffectSize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 10 |     EvidenceBundle, EvidenceItem, HypothesisTestResult, MarketOutcome, MarketType,
[INFO] [stdout]    |                                                                        ^^^^^^^^^^
[INFO] [stdout] 11 |     OracleAccessLevel, PValue, PlayerId, PlayerAction, Price, PriceTrajectory, Profit, Quantity,
[INFO] [stdout]    |                                          ^^^^^^^^^^^^                          ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bandit::EpsilonGreedyBandit`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/scenario.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::bandit::EpsilonGreedyBandit;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::dqn::DQNConfig`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/scenario.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::dqn::DQNConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GrimTriggerAgent` and `GrimTriggerConfig`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:10:27
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::grim_trigger::{GrimTriggerAgent, GrimTriggerConfig};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DecaySchedule` and `QLearningConfig`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:11:25
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::q_learning::{DecaySchedule, QLearningConfig};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GenerousTitForTat`, `SuspiciousTitForTat`, `TitForTatAgent`, and `TitForTwoTats`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::tit_for_tat::{GenerousTitForTat, SuspiciousTitForTat, TitForTatAgent, TitForTwoTats};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MarketType`, `PlayerId`, and `Price`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:15:51
[INFO] [stdout]    |
[INFO] [stdout] 15 |     AlgorithmConfig, AlgorithmType, DemandSystem, MarketType, PlayerId, Price, SimulationConfig,
[INFO] [stdout]    |                                                   ^^^^^^^^^^  ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/tit_for_tat.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/asymmetric.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bandit::EpsilonGreedyBandit`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/scenario.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::bandit::EpsilonGreedyBandit;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::dqn::DQNConfig`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/scenario.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::dqn::DQNConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GrimTriggerAgent` and `GrimTriggerConfig`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:10:27
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::grim_trigger::{GrimTriggerAgent, GrimTriggerConfig};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DecaySchedule` and `QLearningConfig`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:11:25
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::q_learning::{DecaySchedule, QLearningConfig};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GenerousTitForTat`, `SuspiciousTitForTat`, `TitForTatAgent`, and `TitForTwoTats`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::tit_for_tat::{GenerousTitForTat, SuspiciousTitForTat, TitForTatAgent, TitForTwoTats};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MarketType`, `PlayerId`, and `Price`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:15:51
[INFO] [stdout]    |
[INFO] [stdout] 15 |     AlgorithmConfig, AlgorithmType, DemandSystem, MarketType, PlayerId, Price, SimulationConfig,
[INFO] [stdout]    |                                                   ^^^^^^^^^^  ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> implementation/crates/collusion-core/src/scenario.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/tit_for_tat.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jackknife_values`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/correlation_tests.rs:12:54
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::bootstrap::{BootstrapEngine, BootstrapCI, jackknife_values};
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod correlation_tests;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::SeedableRng`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | use rand::SeedableRng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod price_tests;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlayerId`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:11:35
[INFO] [stdout]    |
[INFO] [stdout] 11 |     HypothesisTestResult, PValue, PlayerId, Price, PriceTrajectory,
[INFO] [stdout]    |                                   ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod price_tests;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockBootstrapMethod`, `BlockBootstrap`, and `BootstrapCI`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:15:41
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::bootstrap::{BootstrapEngine, BootstrapCI, BlockBootstrap, BlockBootstrapMethod};
[INFO] [stdout]    |                                         ^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod price_tests;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `normal_quantile`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:17:38
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::effect_size::{normal_cdf, normal_quantile, CohenD};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod price_tests;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HypothesisTestResult` and `PValue`
[INFO] [stdout]  --> implementation/crates/stat-tests/src/closed_testing.rs:8:53
[INFO] [stdout]   |
[INFO] [stdout] 8 | use shared_types::{CollusionError, CollusionResult, HypothesisTestResult, PValue};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BenjaminiHochbergFDR`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/closed_testing.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     BenjaminiHochbergFDR,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConfidenceInterval`, `GameConfig`, `PriceTrajectory`, and `SimulationConfig`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:9:38
[INFO] [stdout]    |
[INFO] [stdout]  9 |     CollusionError, CollusionResult, ConfidenceInterval, DemandSystem,
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     EffectSize, GameConfig, HypothesisTestResult, PValue, Price, PriceTrajectory,
[INFO] [stdout]    |                 ^^^^^^^^^^                                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     SimulationConfig, TestId, TestStatistic,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub mod composite_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BootstrapEngine` and `BootstrapPValue`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:14:24
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::bootstrap::{BootstrapEngine, BootstrapPValue};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub mod composite_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlphaBudgetTracker` and `DirectedClosedTesting`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     AlphaBudgetTracker, DirectedClosedTesting, FWERGuarantee, HolmBonferroni,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub mod composite_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExcessCorrelationStatistic`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 |     CrossFirmCorrelation, ExcessCorrelationStatistic, CorrelationBoundUnderNull,
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub mod composite_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnalyticalNull`, `AsymptoticNull`, `BerryEsseenCorrection`, `CompetitiveSimulator`, `ConservativeNull`, `NullCalibration`, and `SimulatedNull`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     AnalyticalNull, AsymptoticNull, BerryEsseenCorrection, CompetitiveSimulator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     ConservativeNull, NullCalibration, NullDistribution, SimulatedNull,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^                    ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> implementation/crates/stat-tests/src/lib.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub mod composite_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jackknife_values`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/correlation_tests.rs:12:54
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::bootstrap::{BootstrapEngine, BootstrapCI, jackknife_values};
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlayerId`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:11:35
[INFO] [stdout]    |
[INFO] [stdout] 11 |     HypothesisTestResult, PValue, PlayerId, Price, PriceTrajectory,
[INFO] [stdout]    |                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockBootstrapMethod`, `BlockBootstrap`, and `BootstrapCI`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:15:41
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::bootstrap::{BootstrapEngine, BootstrapCI, BlockBootstrap, BlockBootstrapMethod};
[INFO] [stdout]    |                                         ^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `normal_quantile`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/price_tests.rs:17:38
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::effect_size::{normal_cdf, normal_quantile, CohenD};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HypothesisTestResult` and `PValue`
[INFO] [stdout]  --> implementation/crates/stat-tests/src/closed_testing.rs:8:53
[INFO] [stdout]   |
[INFO] [stdout] 8 | use shared_types::{CollusionError, CollusionResult, HypothesisTestResult, PValue};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BenjaminiHochbergFDR`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/closed_testing.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     BenjaminiHochbergFDR,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConfidenceInterval`, `GameConfig`, `PriceTrajectory`, and `SimulationConfig`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:9:38
[INFO] [stdout]    |
[INFO] [stdout]  9 |     CollusionError, CollusionResult, ConfidenceInterval, DemandSystem,
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     EffectSize, GameConfig, HypothesisTestResult, PValue, Price, PriceTrajectory,
[INFO] [stdout]    |                 ^^^^^^^^^^                                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     SimulationConfig, TestId, TestStatistic,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BootstrapEngine` and `BootstrapPValue`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:14:24
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::bootstrap::{BootstrapEngine, BootstrapPValue};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlphaBudgetTracker` and `DirectedClosedTesting`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     AlphaBudgetTracker, DirectedClosedTesting, FWERGuarantee, HolmBonferroni,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExcessCorrelationStatistic`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 |     CrossFirmCorrelation, ExcessCorrelationStatistic, CorrelationBoundUnderNull,
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnalyticalNull`, `AsymptoticNull`, `BerryEsseenCorrection`, `CompetitiveSimulator`, `ConservativeNull`, `NullCalibration`, and `SimulatedNull`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     AnalyticalNull, AsymptoticNull, BerryEsseenCorrection, CompetitiveSimulator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     ConservativeNull, NullCalibration, NullDistribution, SimulatedNull,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:625:36
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |                               -----^^^----
[INFO] [stdout]     |                               |    |
[INFO] [stdout]     |                               |    expected `PlayerAction`, found floating-point number
[INFO] [stdout]     |                               arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] help: the return type of this call is `{float}` due to the type of the argument passed
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:625:31
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |                               ^^^^^---^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    this argument influences the return type of `from_elem`
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3676:7
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:625:50
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |                                             -----^^^----
[INFO] [stdout]     |                                             |    |
[INFO] [stdout]     |                                             |    expected `Price`, found floating-point number
[INFO] [stdout]     |                                             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] help: the return type of this call is `{float}` due to the type of the argument passed
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:625:45
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |                                             ^^^^^---^^^^
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  this argument influences the return type of `from_elem`
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3676:7
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![shared_types::Price(1.0); n], profits)
[INFO] [stdout]     |                                                  ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 5 arguments but 4 arguments were supplied
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:625:9
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^----------------------------------------
[INFO] [stdout]     |                           ||
[INFO] [stdout]     |                           |expected `RoundNumber`, found integer
[INFO] [stdout]     |                           argument #5 of type `Vec<shared_types::Profit>` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: expected `Vec<Quantity>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:625:59
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |                                                           ^^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::Quantity>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/shared-types/src/types.rs:490:12
[INFO] [stdout]     |
[INFO] [stdout] 490 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 625 |         MarketOutcome::new(shared_types::RoundNumber(0), vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout]     |                            ++++++++++++++++++++++++++ +
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 625 -         MarketOutcome::new(0, vec![5.0; n], vec![1.0; n], profits)
[INFO] [stdout] 625 +         MarketOutcome::new(/* shared_types::RoundNumber */, vec![5.0; n], vec![1.0; n], /* Vec<shared_types::Quantity> */, /* Vec<shared_types::Profit> */)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:656:18
[INFO] [stdout]     |
[INFO] [stdout] 656 |         assert!((arm_to_price(0, 5, 0.0, 10.0) - 0.0).abs() < 1e-10);
[INFO] [stdout]     |                  ^^^^^^^^^^^^       ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:61:4
[INFO] [stdout]     |
[INFO] [stdout]  61 | fn arm_to_price(arm: usize, num_arms: usize, price_min: Price, price_max: Price) -> Price {
[INFO] [stdout]     |    ^^^^^^^^^^^^                              ----------------  ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         assert!((arm_to_price(0, 5, shared_types::Price(0.0), 10.0) - 0.0).abs() < 1e-10);
[INFO] [stdout]     |                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         assert!((arm_to_price(0, 5, 0.0, shared_types::Price(10.0)) - 0.0).abs() < 1e-10);
[INFO] [stdout]     |                                          ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:656:63
[INFO] [stdout]     |
[INFO] [stdout] 656 |         assert!((arm_to_price(0, 5, 0.0, 10.0) - 0.0).abs() < 1e-10);
[INFO] [stdout]     |                 -------------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         assert!((arm_to_price(0, 5, 0.0, 10.0) - 0.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                               ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:657:18
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((arm_to_price(4, 5, 0.0, 10.0) - 10.0).abs() < 1e-10);
[INFO] [stdout]     |                  ^^^^^^^^^^^^       ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:61:4
[INFO] [stdout]     |
[INFO] [stdout]  61 | fn arm_to_price(arm: usize, num_arms: usize, price_min: Price, price_max: Price) -> Price {
[INFO] [stdout]     |    ^^^^^^^^^^^^                              ----------------  ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((arm_to_price(4, 5, shared_types::Price(0.0), 10.0) - 10.0).abs() < 1e-10);
[INFO] [stdout]     |                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((arm_to_price(4, 5, 0.0, shared_types::Price(10.0)) - 10.0).abs() < 1e-10);
[INFO] [stdout]     |                                          ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:657:64
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((arm_to_price(4, 5, 0.0, 10.0) - 10.0).abs() < 1e-10);
[INFO] [stdout]     |                 --------------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((arm_to_price(4, 5, 0.0, 10.0) - 10.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                                ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:658:18
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((arm_to_price(2, 5, 0.0, 10.0) - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ^^^^^^^^^^^^       ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:61:4
[INFO] [stdout]     |
[INFO] [stdout]  61 | fn arm_to_price(arm: usize, num_arms: usize, price_min: Price, price_max: Price) -> Price {
[INFO] [stdout]     |    ^^^^^^^^^^^^                              ----------------  ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((arm_to_price(2, 5, shared_types::Price(0.0), 10.0) - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((arm_to_price(2, 5, 0.0, shared_types::Price(10.0)) - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                                          ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:658:63
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((arm_to_price(2, 5, 0.0, 10.0) - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                 -------------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((arm_to_price(2, 5, 0.0, 10.0) - 5.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                               ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:665:22
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let bandit = EpsilonGreedyBandit::new(0, 10, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^ -      ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |      |
[INFO] [stdout]     |                                               |      expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  87 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  88 |         num_arms: usize,
[INFO] [stdout]  89 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout]  90 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let bandit = EpsilonGreedyBandit::new(shared_types::PlayerId(0), 10, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let bandit = EpsilonGreedyBandit::new(0, 10, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                      ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let bandit = EpsilonGreedyBandit::new(0, 10, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                           ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:673:26
[INFO] [stdout]     |
[INFO] [stdout] 673 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   |     |
[INFO] [stdout]     |                                                   |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  87 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  88 |         num_arms: usize,
[INFO] [stdout]  89 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout]  90 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 673 |         let mut bandit = EpsilonGreedyBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                                   +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 673 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 673 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                              ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:675:37
[INFO] [stdout]     |
[INFO] [stdout] 675 |             let action = bandit.act(i);
[INFO] [stdout]     |                                 --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 675 |             let action = bandit.act(shared_types::RoundNumber(i));
[INFO] [stdout]     |                                     ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:676:37
[INFO] [stdout]     |
[INFO] [stdout] 676 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                     ------------    ^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:676:60
[INFO] [stdout]     |
[INFO] [stdout] 676 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                                            ------------    ^^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:687:26
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   |     |
[INFO] [stdout]     |                                                   |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  87 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  88 |         num_arms: usize,
[INFO] [stdout]  89 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout]  90 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let mut bandit = EpsilonGreedyBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                                   +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                              ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:688:20
[INFO] [stdout]     |
[INFO] [stdout] 688 |         bandit.act(0);
[INFO] [stdout]     |                --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                |
[INFO] [stdout]     |                arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 688 |         bandit.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                    ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:696:26
[INFO] [stdout]     |
[INFO] [stdout] 696 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   |     |
[INFO] [stdout]     |                                                   |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  87 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  88 |         num_arms: usize,
[INFO] [stdout]  89 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout]  90 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 696 |         let mut bandit = EpsilonGreedyBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                                   +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 696 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 696 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                              ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:697:20
[INFO] [stdout]     |
[INFO] [stdout] 697 |         bandit.act(0);
[INFO] [stdout]     |                --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                |
[INFO] [stdout]     |                arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 697 |         bandit.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                    ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:701:27
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let mut bandit2 = EpsilonGreedyBandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                    |     |
[INFO] [stdout]     |                                                    |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                    expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  87 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  88 |         num_arms: usize,
[INFO] [stdout]  89 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout]  90 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let mut bandit2 = EpsilonGreedyBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                                    +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let mut bandit2 = EpsilonGreedyBandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let mut bandit2 = EpsilonGreedyBandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                               ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:709:22
[INFO] [stdout]     |
[INFO] [stdout] 709 |         let bandit = UCB1Bandit::new(0, 10, 0.0, 10.0, 2.0);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^ -      ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                      |      |
[INFO] [stdout]     |                                      |      expected `Price`, found floating-point number
[INFO] [stdout]     |                                      expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 213 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 214 |         num_arms: usize,
[INFO] [stdout] 215 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 216 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 709 |         let bandit = UCB1Bandit::new(shared_types::PlayerId(0), 10, 0.0, 10.0, 2.0);
[INFO] [stdout]     |                                      +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 709 |         let bandit = UCB1Bandit::new(0, 10, shared_types::Price(0.0), 10.0, 2.0);
[INFO] [stdout]     |                                             ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 709 |         let bandit = UCB1Bandit::new(0, 10, 0.0, shared_types::Price(10.0), 2.0);
[INFO] [stdout]     |                                                  ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:715:22
[INFO] [stdout]     |
[INFO] [stdout] 715 |         let bandit = UCB1Bandit::new(0, 5, 0.0, 10.0, 2.0);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                      |     |
[INFO] [stdout]     |                                      |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                      expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 213 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 214 |         num_arms: usize,
[INFO] [stdout] 215 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 216 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 715 |         let bandit = UCB1Bandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 2.0);
[INFO] [stdout]     |                                      +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 715 |         let bandit = UCB1Bandit::new(0, 5, shared_types::Price(0.0), 10.0, 2.0);
[INFO] [stdout]     |                                            ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 715 |         let bandit = UCB1Bandit::new(0, 5, 0.0, shared_types::Price(10.0), 2.0);
[INFO] [stdout]     |                                                 ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:722:26
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let mut bandit = UCB1Bandit::new(0, 5, 0.0, 10.0, 2.0);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                          |     |
[INFO] [stdout]     |                                          |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                          expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 213 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 214 |         num_arms: usize,
[INFO] [stdout] 215 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 216 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let mut bandit = UCB1Bandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 2.0);
[INFO] [stdout]     |                                          +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let mut bandit = UCB1Bandit::new(0, 5, shared_types::Price(0.0), 10.0, 2.0);
[INFO] [stdout]     |                                                ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let mut bandit = UCB1Bandit::new(0, 5, 0.0, shared_types::Price(10.0), 2.0);
[INFO] [stdout]     |                                                     ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:724:37
[INFO] [stdout]     |
[INFO] [stdout] 724 |             let action = bandit.act(i);
[INFO] [stdout]     |                                 --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 724 |             let action = bandit.act(shared_types::RoundNumber(i));
[INFO] [stdout]     |                                     ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:725:37
[INFO] [stdout]     |
[INFO] [stdout] 725 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                     ------------    ^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:725:60
[INFO] [stdout]     |
[INFO] [stdout] 725 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                                            ------------    ^^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:726:47
[INFO] [stdout]     |
[INFO] [stdout] 726 |             bandit.observe(&make_outcome(vec![action.price]));
[INFO] [stdout]     |                                               ^^^^^^^^^^^^ expected `f64`, found `Option<Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type `f64`
[INFO] [stdout]                found enum `std::option::Option<shared_types::Price>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:735:22
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let bandit = ThompsonSamplingBandit::new(0, 10, 0.0, 10.0);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -      ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                  |      |
[INFO] [stdout]     |                                                  |      expected `Price`, found floating-point number
[INFO] [stdout]     |                                                  expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 342 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 343 |         num_arms: usize,
[INFO] [stdout] 344 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 345 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let bandit = ThompsonSamplingBandit::new(shared_types::PlayerId(0), 10, 0.0, 10.0);
[INFO] [stdout]     |                                                  +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let bandit = ThompsonSamplingBandit::new(0, 10, shared_types::Price(0.0), 10.0);
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let bandit = ThompsonSamplingBandit::new(0, 10, 0.0, shared_types::Price(10.0));
[INFO] [stdout]     |                                                              ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:742:26
[INFO] [stdout]     |
[INFO] [stdout] 742 |         let mut bandit = ThompsonSamplingBandit::new(0, 5, 0.0, 10.0);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                      |     |
[INFO] [stdout]     |                                                      |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                      expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 342 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 343 |         num_arms: usize,
[INFO] [stdout] 344 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 345 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 742 |         let mut bandit = ThompsonSamplingBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0);
[INFO] [stdout]     |                                                      +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 742 |         let mut bandit = ThompsonSamplingBandit::new(0, 5, shared_types::Price(0.0), 10.0);
[INFO] [stdout]     |                                                            ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 742 |         let mut bandit = ThompsonSamplingBandit::new(0, 5, 0.0, shared_types::Price(10.0));
[INFO] [stdout]     |                                                                 ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:744:37
[INFO] [stdout]     |
[INFO] [stdout] 744 |             let action = bandit.act(i);
[INFO] [stdout]     |                                 --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 744 |             let action = bandit.act(shared_types::RoundNumber(i));
[INFO] [stdout]     |                                     ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:745:37
[INFO] [stdout]     |
[INFO] [stdout] 745 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                     ------------    ^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:745:60
[INFO] [stdout]     |
[INFO] [stdout] 745 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                                            ------------    ^^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot multiply `std::option::Option<shared_types::Price>` by `{float}`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:746:60
[INFO] [stdout]     |
[INFO] [stdout] 746 |             bandit.observe(&make_outcome(vec![action.price * 0.5]));
[INFO] [stdout]     |                                               ------------ ^ --- {float}
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Mul<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:752:26
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let mut bandit = ThompsonSamplingBandit::new(0, 5, 0.0, 10.0);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                      |     |
[INFO] [stdout]     |                                                      |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                      expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 342 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 343 |         num_arms: usize,
[INFO] [stdout] 344 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 345 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let mut bandit = ThompsonSamplingBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0);
[INFO] [stdout]     |                                                      +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let mut bandit = ThompsonSamplingBandit::new(0, 5, shared_types::Price(0.0), 10.0);
[INFO] [stdout]     |                                                            ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let mut bandit = ThompsonSamplingBandit::new(0, 5, 0.0, shared_types::Price(10.0));
[INFO] [stdout]     |                                                                 ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:753:20
[INFO] [stdout]     |
[INFO] [stdout] 753 |         bandit.act(0);
[INFO] [stdout]     |                --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                |
[INFO] [stdout]     |                arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 753 |         bandit.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                    ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:765:22
[INFO] [stdout]     |
[INFO] [stdout] 765 |         let bandit = EXP3Bandit::new(0, 10, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^ -      ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                      |      |
[INFO] [stdout]     |                                      |      expected `Price`, found floating-point number
[INFO] [stdout]     |                                      expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:487:12
[INFO] [stdout]     |
[INFO] [stdout] 487 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 488 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 489 |         num_arms: usize,
[INFO] [stdout] 490 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 491 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 765 |         let bandit = EXP3Bandit::new(shared_types::PlayerId(0), 10, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                      +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 765 |         let bandit = EXP3Bandit::new(0, 10, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                             ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 765 |         let bandit = EXP3Bandit::new(0, 10, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                  ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:771:22
[INFO] [stdout]     |
[INFO] [stdout] 771 |         let bandit = EXP3Bandit::new(0, 4, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                      |     |
[INFO] [stdout]     |                                      |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                      expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:487:12
[INFO] [stdout]     |
[INFO] [stdout] 487 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 488 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 489 |         num_arms: usize,
[INFO] [stdout] 490 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 491 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 771 |         let bandit = EXP3Bandit::new(shared_types::PlayerId(0), 4, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                      +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 771 |         let bandit = EXP3Bandit::new(0, 4, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                            ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 771 |         let bandit = EXP3Bandit::new(0, 4, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                 ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:780:26
[INFO] [stdout]     |
[INFO] [stdout] 780 |         let mut bandit = EXP3Bandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                          |     |
[INFO] [stdout]     |                                          |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                          expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:487:12
[INFO] [stdout]     |
[INFO] [stdout] 487 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 488 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 489 |         num_arms: usize,
[INFO] [stdout] 490 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 491 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 780 |         let mut bandit = EXP3Bandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                          +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 780 |         let mut bandit = EXP3Bandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 780 |         let mut bandit = EXP3Bandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                     ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:782:37
[INFO] [stdout]     |
[INFO] [stdout] 782 |             let action = bandit.act(i);
[INFO] [stdout]     |                                 --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 782 |             let action = bandit.act(shared_types::RoundNumber(i));
[INFO] [stdout]     |                                     ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:783:37
[INFO] [stdout]     |
[INFO] [stdout] 783 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                     ------------    ^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:783:60
[INFO] [stdout]     |
[INFO] [stdout] 783 |             assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                                            ------------    ^^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot multiply `std::option::Option<shared_types::Price>` by `{float}`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:784:60
[INFO] [stdout]     |
[INFO] [stdout] 784 |             bandit.observe(&make_outcome(vec![action.price * 0.3]));
[INFO] [stdout]     |                                               ------------ ^ --- {float}
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Mul<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:790:26
[INFO] [stdout]     |
[INFO] [stdout] 790 |         let mut bandit = EXP3Bandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                          |     |
[INFO] [stdout]     |                                          |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                          expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:487:12
[INFO] [stdout]     |
[INFO] [stdout] 487 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 488 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 489 |         num_arms: usize,
[INFO] [stdout] 490 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] 491 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 790 |         let mut bandit = EXP3Bandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                          +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 790 |         let mut bandit = EXP3Bandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 790 |         let mut bandit = EXP3Bandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                     ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:791:20
[INFO] [stdout]     |
[INFO] [stdout] 791 |         bandit.act(0);
[INFO] [stdout]     |                --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                |
[INFO] [stdout]     |                arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 791 |         bandit.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                    ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:799:26
[INFO] [stdout]     |
[INFO] [stdout] 799 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   |     |
[INFO] [stdout]     |                                                   |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/bandit.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  86 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  87 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  88 |         num_arms: usize,
[INFO] [stdout]  89 |         price_min: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout]  90 |         price_max: Price,
[INFO] [stdout]     |         ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 799 |         let mut bandit = EpsilonGreedyBandit::new(shared_types::PlayerId(0), 5, 0.0, 10.0, 0.1);
[INFO] [stdout]     |                                                   +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 799 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, shared_types::Price(0.0), 10.0, 0.1);
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 799 |         let mut bandit = EpsilonGreedyBandit::new(0, 5, 0.0, shared_types::Price(10.0), 0.1);
[INFO] [stdout]     |                                                              ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:733:44
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                                       -----^^^----
[INFO] [stdout]     |                                       |    |
[INFO] [stdout]     |                                       |    expected `Price`, found floating-point number
[INFO] [stdout]     |                                       arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] help: the return type of this call is `{float}` due to the type of the argument passed
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:733:39
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                                       ^^^^^---^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this argument influences the return type of `from_elem`
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3676:7
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(0, prices, vec![shared_types::Price(1.0); n], profits)
[INFO] [stdout]     |                                            ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 5 arguments but 4 arguments were supplied
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:733:9
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^----------------------------------
[INFO] [stdout]     |                           ||
[INFO] [stdout]     |                           |expected `RoundNumber`, found integer
[INFO] [stdout]     |                           argument #5 of type `Vec<shared_types::Profit>` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: expected `Vec<PlayerAction>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:733:31
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                               ^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::PlayerAction>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: expected `Vec<Quantity>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:733:53
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                                                     ^^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::Quantity>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/shared-types/src/types.rs:490:12
[INFO] [stdout]     |
[INFO] [stdout] 490 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 733 |         MarketOutcome::new(shared_types::RoundNumber(0), prices, vec![1.0; n], profits)
[INFO] [stdout]     |                            ++++++++++++++++++++++++++ +
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 733 -         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout] 733 +         MarketOutcome::new(/* shared_types::RoundNumber */, /* Vec<shared_types::PlayerAction> */, vec![1.0; n], /* Vec<shared_types::Quantity> */, /* Vec<shared_types::Profit> */)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:908:32
[INFO] [stdout]     |
[INFO] [stdout] 908 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 908 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:910:33
[INFO] [stdout]     |
[INFO] [stdout] 910 |         assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                 ------------    ^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:910:56
[INFO] [stdout]     |
[INFO] [stdout] 910 |         assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                                        ------------    ^^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:928:23
[INFO] [stdout]     |
[INFO] [stdout] 928 |             agent.act(i);
[INFO] [stdout]     |                   --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 928 |             agent.act(shared_types::RoundNumber(i));
[INFO] [stdout]     |                       ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:970:24
[INFO] [stdout]     |
[INFO] [stdout] 970 |             price_min: 0.0,
[INFO] [stdout]     |                        ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 970 |             price_min: shared_types::Price(0.0),
[INFO] [stdout]     |                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:971:24
[INFO] [stdout]     |
[INFO] [stdout] 971 |             price_max: 10.0,
[INFO] [stdout]     |                        ^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 971 |             price_max: shared_types::Price(10.0),
[INFO] [stdout]     |                        ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:976:58
[INFO] [stdout]     |
[INFO] [stdout] 976 |         assert!((agent.action_to_price(0) - 0.0).abs() < 1e-10);
[INFO] [stdout]     |                 --------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 976 |         assert!((agent.action_to_price(0) - 0.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                          ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:977:58
[INFO] [stdout]     |
[INFO] [stdout] 977 |         assert!((agent.action_to_price(5) - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                 --------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 977 |         assert!((agent.action_to_price(5) - 5.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                          ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/dqn.rs:978:60
[INFO] [stdout]     |
[INFO] [stdout] 978 |         assert!((agent.action_to_price(10) - 10.0).abs() < 1e-10);
[INFO] [stdout]     |                 ----------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 978 |         assert!((agent.action_to_price(10) - 10.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                            ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `num_rounds`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:826:13
[INFO] [stdout]     |
[INFO] [stdout] 826 |             num_rounds: 100,
[INFO] [stdout]     |             ^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `num_players`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:827:13
[INFO] [stdout]     |
[INFO] [stdout] 827 |             num_players: 2,
[INFO] [stdout]     |             ^^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `demand_system`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:828:13
[INFO] [stdout]     |
[INFO] [stdout] 828 |             demand_system: DemandSystem::Linear {
[INFO] [stdout]     |             ^^^^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Linear` has no field named `intercept`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:829:17
[INFO] [stdout]     |
[INFO] [stdout] 829 |                 intercept: 10.0,
[INFO] [stdout]     |                 ^^^^^^^^^ `shared_types::DemandSystem::Linear` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `max_quantity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Linear` has no field named `cross_slope`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:831:17
[INFO] [stdout]     |
[INFO] [stdout] 831 |                 cross_slope: 0.5,
[INFO] [stdout]     |                 ^^^^^^^^^^^ `shared_types::DemandSystem::Linear` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `max_quantity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `marginal_cost`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:833:13
[INFO] [stdout]     |
[INFO] [stdout] 833 |             marginal_cost: vec![1.0, 1.0],
[INFO] [stdout]     |             ^^^^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `num_rounds`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:845:13
[INFO] [stdout]     |
[INFO] [stdout] 845 |             num_rounds: 100,
[INFO] [stdout]     |             ^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `num_players`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:846:13
[INFO] [stdout]     |
[INFO] [stdout] 846 |             num_players: 2,
[INFO] [stdout]     |             ^^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `demand_system`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:847:13
[INFO] [stdout]     |
[INFO] [stdout] 847 |             demand_system: DemandSystem::Logit { mu: 0.5, a_0: 0.0 },
[INFO] [stdout]     |             ^^^^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Logit` has no field named `mu`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:847:50
[INFO] [stdout]     |
[INFO] [stdout] 847 |             demand_system: DemandSystem::Logit { mu: 0.5, a_0: 0.0 },
[INFO] [stdout]     |                                                  ^^ `shared_types::DemandSystem::Logit` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `temperature`, `outside_option_value`, `market_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Logit` has no field named `a_0`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:847:59
[INFO] [stdout]     |
[INFO] [stdout] 847 |             demand_system: DemandSystem::Logit { mu: 0.5, a_0: 0.0 },
[INFO] [stdout]     |                                                           ^^^ `shared_types::DemandSystem::Logit` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `temperature`, `outside_option_value`, `market_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `shared_types::SimulationConfig` has no field named `marginal_cost`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:848:13
[INFO] [stdout]     |
[INFO] [stdout] 848 |             marginal_cost: vec![1.0, 1.0],
[INFO] [stdout]     |             ^^^^^^^^^^^^^ `shared_types::SimulationConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `game`, `algorithm`, `oracle_access`, `evaluation_mode`, `num_episodes` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:446:24
[INFO] [stdout]     |
[INFO] [stdout] 446 |             player_id: 0,
[INFO] [stdout]     |                        ^ expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 446 |             player_id: shared_types::PlayerId(0),
[INFO] [stdout]     |                        +++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:447:32
[INFO] [stdout]     |
[INFO] [stdout] 447 |             cooperative_price: 5.0,
[INFO] [stdout]     |                                ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 447 |             cooperative_price: shared_types::Price(5.0),
[INFO] [stdout]     |                                ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:448:31
[INFO] [stdout]     |
[INFO] [stdout] 448 |             punishment_price: 1.0,
[INFO] [stdout]     |                               ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 448 |             punishment_price: shared_types::Price(1.0),
[INFO] [stdout]     |                               ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:456:56
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                   -----^^^----
[INFO] [stdout]     |                                                   |    |
[INFO] [stdout]     |                                                   |    expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] help: the return type of this call is `{float}` due to the type of the argument passed
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:456:51
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                   ^^^^^---^^^^
[INFO] [stdout]     |                                                        |
[INFO] [stdout]     |                                                        this argument influences the return type of `from_elem`
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3676:7
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![shared_types::Price(1.0); n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: a value of type `Vec<shared_types::Quantity>` cannot be built from an iterator over elements of type `f64`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:456:96
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                                                                ^^^^^^^ value of type `Vec<shared_types::Quantity>` cannot be built from `std::iter::Iterator<Item=f64>`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `FromIterator<f64>` is not implemented for `Vec<shared_types::Quantity>`
[INFO] [stdout]       but trait `FromIterator<shared_types::Quantity>` is implemented for it
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3888:0
[INFO] [stdout]     = help: for that trait implementation, expected `shared_types::Quantity`, found `f64`
[INFO] [stdout] note: the method call chain might not have had the expected associated types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:456:79
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                                 ------ ------ ^^^^^^^^^^^^^^^^ `Iterator::Item` changed to `f64` here
[INFO] [stdout]     |                                                                 |      |
[INFO] [stdout]     |                                                                 |      `Iterator::Item` is `&f64` here
[INFO] [stdout]     |                                                                 this expression has type `Vec<f64>`
[INFO] [stdout] note: required by a bound in `collect`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/iter/traits/iterator.rs:2079:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 5 arguments but 4 arguments were supplied
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:456:9
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^-------------------------------------------------------------------------------
[INFO] [stdout]     |                           ||
[INFO] [stdout]     |                           |expected `RoundNumber`, found `usize`
[INFO] [stdout]     |                           argument #5 of type `Vec<shared_types::Profit>` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: expected `Vec<PlayerAction>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:456:35
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::PlayerAction>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/shared-types/src/types.rs:490:12
[INFO] [stdout]     |
[INFO] [stdout] 490 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 456 |         MarketOutcome::new(shared_types::RoundNumber(round), prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                            ++++++++++++++++++++++++++     +
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 456 -         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout] 456 +         MarketOutcome::new(/* shared_types::RoundNumber */, /* Vec<shared_types::PlayerAction> */, vec![1.0; n], prices.iter().map(|p| p - 1.0).collect(), /* Vec<shared_types::Profit> */)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:465:32
[INFO] [stdout]     |
[INFO] [stdout] 465 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 465 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:466:31
[INFO] [stdout]     |
[INFO] [stdout] 466 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:475:32
[INFO] [stdout]     |
[INFO] [stdout] 475 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 475 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:476:31
[INFO] [stdout]     |
[INFO] [stdout] 476 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:488:43
[INFO] [stdout]     |
[INFO] [stdout] 488 |         assert_eq!(agent.trigger_round(), Some(0));
[INFO] [stdout]     |                                           ^^^^^^^ expected `Option<RoundNumber>`, found `Option<{integer}>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::RoundNumber>`
[INFO] [stdout]                found enum `std::option::Option<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:490:32
[INFO] [stdout]     |
[INFO] [stdout] 490 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 490 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:491:31
[INFO] [stdout]     |
[INFO] [stdout] 491 |         assert!((action.price - 1.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:504:32
[INFO] [stdout]     |
[INFO] [stdout] 504 |         let action = agent.act(2);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 504 |         let action = agent.act(shared_types::RoundNumber(2));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:505:31
[INFO] [stdout]     |
[INFO] [stdout] 505 |         assert!((action.price - 1.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:558:32
[INFO] [stdout]     |
[INFO] [stdout] 558 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 558 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:559:31
[INFO] [stdout]     |
[INFO] [stdout] 559 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:608:32
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:609:31
[INFO] [stdout]     |
[INFO] [stdout] 609 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:622:32
[INFO] [stdout]     |
[INFO] [stdout] 622 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 622 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/grim_trigger.rs:623:31
[INFO] [stdout]     |
[INFO] [stdout] 623 |         assert!((action.price - 1.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithm::PricingAlgorithm`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/scenario.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::algorithm::PricingAlgorithm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Linear` has no field named `intercept`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/correlation_tests.rs:798:13
[INFO] [stdout]     |
[INFO] [stdout] 798 |             intercept: 10.0,
[INFO] [stdout]     |             ^^^^^^^^^ `shared_types::DemandSystem::Linear` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `max_quantity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Linear` has no field named `cross_slope`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/correlation_tests.rs:800:13
[INFO] [stdout]     |
[INFO] [stdout] 800 |             cross_slope: 0.5,
[INFO] [stdout]     |             ^^^^^^^^^^^ `shared_types::DemandSystem::Linear` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `max_quantity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:598:24
[INFO] [stdout]     |
[INFO] [stdout] 598 |             player_id: 0,
[INFO] [stdout]     |                        ^ expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 598 |             player_id: shared_types::PlayerId(0),
[INFO] [stdout]     |                        +++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:600:24
[INFO] [stdout]     |
[INFO] [stdout] 600 |             price_min: 0.0,
[INFO] [stdout]     |                        ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 600 |             price_min: shared_types::Price(0.0),
[INFO] [stdout]     |                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:601:24
[INFO] [stdout]     |
[INFO] [stdout] 601 |             price_max: 10.0,
[INFO] [stdout]     |                        ^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 601 |             price_max: shared_types::Price(10.0),
[INFO] [stdout]     |                        ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:617:44
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                                       -----^^^----
[INFO] [stdout]     |                                       |    |
[INFO] [stdout]     |                                       |    expected `Price`, found floating-point number
[INFO] [stdout]     |                                       arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] help: the return type of this call is `{float}` due to the type of the argument passed
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:617:39
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                                       ^^^^^---^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this argument influences the return type of `from_elem`
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3676:7
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(0, prices, vec![shared_types::Price(1.0); n], profits)
[INFO] [stdout]     |                                            ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 5 arguments but 4 arguments were supplied
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:617:9
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^----------------------------------
[INFO] [stdout]     |                           ||
[INFO] [stdout]     |                           |expected `RoundNumber`, found integer
[INFO] [stdout]     |                           argument #5 of type `Vec<shared_types::Profit>` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: expected `Vec<PlayerAction>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:617:31
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                               ^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::PlayerAction>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: expected `Vec<Quantity>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:617:53
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout]     |                                                     ^^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::Quantity>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/shared-types/src/types.rs:490:12
[INFO] [stdout]     |
[INFO] [stdout] 490 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 617 |         MarketOutcome::new(shared_types::RoundNumber(0), prices, vec![1.0; n], profits)
[INFO] [stdout]     |                            ++++++++++++++++++++++++++ +
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 617 -         MarketOutcome::new(0, prices, vec![1.0; n], profits)
[INFO] [stdout] 617 +         MarketOutcome::new(/* shared_types::RoundNumber */, /* Vec<shared_types::PlayerAction> */, vec![1.0; n], /* Vec<shared_types::Quantity> */, /* Vec<shared_types::Profit> */)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0689]: can't call method `max` on ambiguous numeric type `{float}`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:640:51
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let expected = (1.0 / (1.0 + 0.1 * 10.0)).max(0.01);
[INFO] [stdout]     |                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:646:17
[INFO] [stdout]     |
[INFO] [stdout] 646 |         let d = StateDiscretizer::new(10, 0.0, 10.0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^     ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:98:8
[INFO] [stdout]     |
[INFO] [stdout]  98 |     fn new(num_bins: usize, price_min: Price, price_max: Price) -> Self {
[INFO] [stdout]     |        ^^^                  ----------------  ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 646 |         let d = StateDiscretizer::new(10, shared_types::Price(0.0), 10.0);
[INFO] [stdout]     |                                           ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 646 |         let d = StateDiscretizer::new(10, 0.0, shared_types::Price(10.0));
[INFO] [stdout]     |                                                ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:647:39
[INFO] [stdout]     |
[INFO] [stdout] 647 |         assert_eq!(d.discretize_price(0.0), 0);
[INFO] [stdout]     |                      ---------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn discretize_price(&self, price: Price) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 647 |         assert_eq!(d.discretize_price(shared_types::Price(0.0)), 0);
[INFO] [stdout]     |                                       ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:648:39
[INFO] [stdout]     |
[INFO] [stdout] 648 |         assert_eq!(d.discretize_price(10.0), 9);
[INFO] [stdout]     |                      ---------------- ^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn discretize_price(&self, price: Price) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 648 |         assert_eq!(d.discretize_price(shared_types::Price(10.0)), 9);
[INFO] [stdout]     |                                       ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:649:39
[INFO] [stdout]     |
[INFO] [stdout] 649 |         assert_eq!(d.discretize_price(5.0), 5);
[INFO] [stdout]     |                      ---------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn discretize_price(&self, price: Price) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 649 |         assert_eq!(d.discretize_price(shared_types::Price(5.0)), 5);
[INFO] [stdout]     |                                       ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NullDistribution`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:24:40
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ConservativeNull, NullCalibration, NullDistribution, SimulatedNull,
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::prelude`
[INFO] [stdout]  --> implementation/crates/stat-tests/src/price_tests.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:650:39
[INFO] [stdout]     |
[INFO] [stdout] 650 |         assert_eq!(d.discretize_price(-1.0), 0);
[INFO] [stdout]     |                      ---------------- ^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn discretize_price(&self, price: Price) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 650 |         assert_eq!(d.discretize_price(shared_types::Price(-1.0)), 0);
[INFO] [stdout]     |                                       ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:651:39
[INFO] [stdout]     |
[INFO] [stdout] 651 |         assert_eq!(d.discretize_price(11.0), 9);
[INFO] [stdout]     |                      ---------------- ^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn discretize_price(&self, price: Price) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 651 |         assert_eq!(d.discretize_price(shared_types::Price(11.0)), 9);
[INFO] [stdout]     |                                       ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:656:17
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let d = StateDiscretizer::new(5, 0.0, 10.0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^    ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:98:8
[INFO] [stdout]     |
[INFO] [stdout]  98 |     fn new(num_bins: usize, price_min: Price, price_max: Price) -> Self {
[INFO] [stdout]     |        ^^^                  ----------------  ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let d = StateDiscretizer::new(5, shared_types::Price(0.0), 10.0);
[INFO] [stdout]     |                                          ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let d = StateDiscretizer::new(5, 0.0, shared_types::Price(10.0));
[INFO] [stdout]     |                                               ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:657:57
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((d.action_to_price(0, 5) - 0.0).abs() < 1e-10);
[INFO] [stdout]     |                 -------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 657 |         assert!((d.action_to_price(0, 5) - 0.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                         ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:658:58
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((d.action_to_price(4, 5) - 10.0).abs() < 1e-10);
[INFO] [stdout]     |                 --------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!((d.action_to_price(4, 5) - 10.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                          ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:659:57
[INFO] [stdout]     |
[INFO] [stdout] 659 |         assert!((d.action_to_price(2, 5) - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                 -------------------------------------   ^^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 659 |         assert!((d.action_to_price(2, 5) - 5.0).abs() < shared_types::Price(1e-10));
[INFO] [stdout]     |                                                         ++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:664:17
[INFO] [stdout]     |
[INFO] [stdout] 664 |         let d = StateDiscretizer::new(5, 0.0, 10.0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^    ---  ---- expected `Price`, found floating-point number
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:98:8
[INFO] [stdout]     |
[INFO] [stdout]  98 |     fn new(num_bins: usize, price_min: Price, price_max: Price) -> Self {
[INFO] [stdout]     |        ^^^                  ----------------  ----------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 664 |         let d = StateDiscretizer::new(5, shared_types::Price(0.0), 10.0);
[INFO] [stdout]     |                                          ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 664 |         let d = StateDiscretizer::new(5, 0.0, shared_types::Price(10.0));
[INFO] [stdout]     |                                               ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:665:38
[INFO] [stdout]     |
[INFO] [stdout] 665 |         assert_eq!(d.price_to_action(0.0, 5), 0);
[INFO] [stdout]     |                      --------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn price_to_action(&self, price: Price, num_actions: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         assert_eq!(d.price_to_action(shared_types::Price(0.0), 5), 0);
[INFO] [stdout]     |                                      ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:722:51
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let test = SupraCompetitivePriceTest::new(3.0).with_bootstrap(500).with_seed(42);
[INFO] [stdout]     |                    ------------------------------ ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  49 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let test = SupraCompetitivePriceTest::new(shared_types::Price(3.0)).with_bootstrap(500).with_seed(42);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:731:51
[INFO] [stdout]     |
[INFO] [stdout] 731 |         let test = SupraCompetitivePriceTest::new(3.0).with_bootstrap(500).with_seed(42);
[INFO] [stdout]     |                    ------------------------------ ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  49 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 731 |         let test = SupraCompetitivePriceTest::new(shared_types::Price(3.0)).with_bootstrap(500).with_seed(42);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:738:51
[INFO] [stdout]     |
[INFO] [stdout] 738 |         let test = SupraCompetitivePriceTest::new(3.0);
[INFO] [stdout]     |                    ------------------------------ ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  49 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 738 |         let test = SupraCompetitivePriceTest::new(shared_types::Price(3.0));
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:666:38
[INFO] [stdout]     |
[INFO] [stdout] 666 |         assert_eq!(d.price_to_action(10.0, 5), 4);
[INFO] [stdout]     |                      --------------- ^^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn price_to_action(&self, price: Price, num_actions: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 666 |         assert_eq!(d.price_to_action(shared_types::Price(10.0), 5), 4);
[INFO] [stdout]     |                                      ++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:745:51
[INFO] [stdout]     |
[INFO] [stdout] 745 |         let test = SupraCompetitivePriceTest::new(3.0).with_bootstrap(200).with_seed(42);
[INFO] [stdout]     |                    ------------------------------ ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  49 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 745 |         let test = SupraCompetitivePriceTest::new(shared_types::Price(3.0)).with_bootstrap(200).with_seed(42);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:789:46
[INFO] [stdout]     |
[INFO] [stdout] 789 |         let test = PricePersistenceTest::new(3.0);
[INFO] [stdout]     |                    ------------------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 789 |         let test = PricePersistenceTest::new(shared_types::Price(3.0));
[INFO] [stdout]     |                                              ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:667:38
[INFO] [stdout]     |
[INFO] [stdout] 667 |         assert_eq!(d.price_to_action(5.0, 5), 2);
[INFO] [stdout]     |                      --------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn price_to_action(&self, price: Price, num_actions: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^        ------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 667 |         assert_eq!(d.price_to_action(shared_types::Price(5.0), 5), 2);
[INFO] [stdout]     |                                      ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:799:46
[INFO] [stdout]     |
[INFO] [stdout] 799 |         let test = PricePersistenceTest::new(3.0);
[INFO] [stdout]     |                    ------------------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 799 |         let test = PricePersistenceTest::new(shared_types::Price(3.0));
[INFO] [stdout]     |                                              ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:807:46
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let test = PricePersistenceTest::new(3.0);
[INFO] [stdout]     |                    ------------------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 |     pub fn new(competitive_price: Price) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let test = PricePersistenceTest::new(shared_types::Price(3.0));
[INFO] [stdout]     |                                              ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:816:48
[INFO] [stdout]     |
[INFO] [stdout] 816 |         let test = ConvergencePatternTest::new(3.0, 10);
[INFO] [stdout]     |                    --------------------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn new(competitive_price: Price, window_size: usize) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 816 |         let test = ConvergencePatternTest::new(shared_types::Price(3.0), 10);
[INFO] [stdout]     |                                                ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:823:48
[INFO] [stdout]     |
[INFO] [stdout] 823 |         let test = ConvergencePatternTest::new(3.0, 10);
[INFO] [stdout]     |                    --------------------------- ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn new(competitive_price: Price, window_size: usize) -> Self {
[INFO] [stdout]     |            ^^^ ------------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 823 |         let test = ConvergencePatternTest::new(shared_types::Price(3.0), 10);
[INFO] [stdout]     |                                                ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:718:32
[INFO] [stdout]     |
[INFO] [stdout] 718 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 718 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:720:33
[INFO] [stdout]     |
[INFO] [stdout] 720 |         assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                 ------------    ^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:720:56
[INFO] [stdout]     |
[INFO] [stdout] 720 |         assert!(action.price >= 0.0 && action.price <= 10.0);
[INFO] [stdout]     |                                        ------------    ^^^^ expected `Option<Price>`, found floating-point number
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected because this is `std::option::Option<shared_types::Price>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `std::option::Option<shared_types::Price>`
[INFO] [stdout]                found type `{float}`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:756:19
[INFO] [stdout]     |
[INFO] [stdout] 756 |         agent.act(0);
[INFO] [stdout]     |               --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |               |
[INFO] [stdout]     |               arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 756 |         agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                   ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:823:37
[INFO] [stdout]     |
[INFO] [stdout] 823 |         let actions = multi.act_all(0);
[INFO] [stdout]     |                             ------- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:569:12
[INFO] [stdout]     |
[INFO] [stdout] 569 |     pub fn act_all(&mut self, round: RoundNumber) -> Vec<PlayerAction> {
[INFO] [stdout]     |            ^^^^^^^            ------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 823 |         let actions = multi.act_all(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                     ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:869:23
[INFO] [stdout]     |
[INFO] [stdout] 869 |             agent.act(i);
[INFO] [stdout]     |                   --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 869 |             agent.act(shared_types::RoundNumber(i));
[INFO] [stdout]     |                       ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:892:24
[INFO] [stdout]     |
[INFO] [stdout] 892 |             (1.0, vec![5.0, 5.0])
[INFO] [stdout]     |                        ^^^ expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 892 |             (1.0, vec![shared_types::Price(5.0), 5.0])
[INFO] [stdout]     |                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0615]: attempted to take value of method `num_players` on type `SimulationConfig`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/scenario.rs:849:47
[INFO] [stdout]     |
[INFO] [stdout] 849 |         assert_eq!(sweep[2].simulation_config.num_players, 4);
[INFO] [stdout]     |                                               ^^^^^^^^^^^ method, not a field
[INFO] [stdout]     |
[INFO] [stdout] help: use parentheses to call the method
[INFO] [stdout]     |
[INFO] [stdout] 849 |         assert_eq!(sweep[2].simulation_config.num_players(), 4);
[INFO] [stdout]     |                                                          ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:626:56
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                   -----^^^----
[INFO] [stdout]     |                                                   |    |
[INFO] [stdout]     |                                                   |    expected `Price`, found floating-point number
[INFO] [stdout]     |                                                   arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] help: the return type of this call is `{float}` due to the type of the argument passed
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:626:51
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                   ^^^^^---^^^^
[INFO] [stdout]     |                                                        |
[INFO] [stdout]     |                                                        this argument influences the return type of `from_elem`
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3676:7
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![shared_types::Price(1.0); n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: a value of type `Vec<shared_types::Quantity>` cannot be built from an iterator over elements of type `f64`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:626:96
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                                                                ^^^^^^^ value of type `Vec<shared_types::Quantity>` cannot be built from `std::iter::Iterator<Item=f64>`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `FromIterator<f64>` is not implemented for `Vec<shared_types::Quantity>`
[INFO] [stdout]       but trait `FromIterator<shared_types::Quantity>` is implemented for it
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/alloc/src/vec/mod.rs:3888:0
[INFO] [stdout]     = help: for that trait implementation, expected `shared_types::Quantity`, found `f64`
[INFO] [stdout] note: the method call chain might not have had the expected associated types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:626:79
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                                                 ------ ------ ^^^^^^^^^^^^^^^^ `Iterator::Item` changed to `f64` here
[INFO] [stdout]     |                                                                 |      |
[INFO] [stdout]     |                                                                 |      `Iterator::Item` is `&f64` here
[INFO] [stdout]     |                                                                 this expression has type `Vec<f64>`
[INFO] [stdout] note: required by a bound in `collect`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/iter/traits/iterator.rs:2079:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 5 arguments but 4 arguments were supplied
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:626:9
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^-------------------------------------------------------------------------------
[INFO] [stdout]     |                           ||
[INFO] [stdout]     |                           |expected `RoundNumber`, found `usize`
[INFO] [stdout]     |                           argument #5 of type `Vec<shared_types::Profit>` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: expected `Vec<PlayerAction>`, found `Vec<f64>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:626:35
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^
[INFO] [stdout]     = note: expected struct `Vec<shared_types::PlayerAction>`
[INFO] [stdout]                found struct `Vec<f64>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/shared-types/src/types.rs:490:12
[INFO] [stdout]     |
[INFO] [stdout] 490 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 626 |         MarketOutcome::new(shared_types::RoundNumber(round), prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout]     |                            ++++++++++++++++++++++++++     +
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 626 -         MarketOutcome::new(round, prices.clone(), vec![1.0; n], prices.iter().map(|p| p - 1.0).collect())
[INFO] [stdout] 626 +         MarketOutcome::new(/* shared_types::RoundNumber */, /* Vec<shared_types::PlayerAction> */, vec![1.0; n], prices.iter().map(|p| p - 1.0).collect(), /* Vec<shared_types::Profit> */)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:633:25
[INFO] [stdout]     |
[INFO] [stdout] 633 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                             |     |
[INFO] [stdout]     |                                             |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                             expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  33 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  34 |         num_players: usize,
[INFO] [stdout]  35 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout]  36 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 633 |         let mut agent = TitForTatAgent::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                             +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 633 |         let mut agent = TitForTatAgent::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 633 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:634:32
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:635:31
[INFO] [stdout]     |
[INFO] [stdout] 635 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:640:25
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                             |     |
[INFO] [stdout]     |                                             |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                             expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  33 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  34 |         num_players: usize,
[INFO] [stdout]  35 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout]  36 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let mut agent = TitForTatAgent::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                             +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let mut agent = TitForTatAgent::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:642:32
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:643:31
[INFO] [stdout]     |
[INFO] [stdout] 643 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:648:25
[INFO] [stdout]     |
[INFO] [stdout] 648 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                             |     |
[INFO] [stdout]     |                                             |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                             expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  33 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  34 |         num_players: usize,
[INFO] [stdout]  35 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout]  36 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 648 |         let mut agent = TitForTatAgent::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                             +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 648 |         let mut agent = TitForTatAgent::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 648 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:650:32
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:651:31
[INFO] [stdout]     |
[INFO] [stdout] 651 |         assert!((action.price - 1.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:656:25
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                             |     |
[INFO] [stdout]     |                                             |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                             expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  33 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  34 |         num_players: usize,
[INFO] [stdout]  35 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout]  36 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let mut agent = TitForTatAgent::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                             +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let mut agent = TitForTatAgent::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 656 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:659:32
[INFO] [stdout]     |
[INFO] [stdout] 659 |         let action = agent.act(2);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 659 |         let action = agent.act(shared_types::RoundNumber(2));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:660:31
[INFO] [stdout]     |
[INFO] [stdout] 660 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:665:25
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                             |     |
[INFO] [stdout]     |                                             |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                             expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  33 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  34 |         num_players: usize,
[INFO] [stdout]  35 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout]  36 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let mut agent = TitForTatAgent::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                             +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let mut agent = TitForTatAgent::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 665 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:668:32
[INFO] [stdout]     |
[INFO] [stdout] 668 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 668 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:669:31
[INFO] [stdout]     |
[INFO] [stdout] 669 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:677:25
[INFO] [stdout]     |
[INFO] [stdout] 677 |         let mut agent = TitForTwoTats::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                            |     |
[INFO] [stdout]     |                                            |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                            expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 150 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 151 |         num_players: usize,
[INFO] [stdout] 152 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 153 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 677 |         let mut agent = TitForTwoTats::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                            +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 677 |         let mut agent = TitForTwoTats::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                  ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 677 |         let mut agent = TitForTwoTats::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                       ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:679:32
[INFO] [stdout]     |
[INFO] [stdout] 679 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 679 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:680:31
[INFO] [stdout]     |
[INFO] [stdout] 680 |         assert!((action.price - 5.0).abs() < 1e-10); // Still cooperating
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:685:25
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let mut agent = TitForTwoTats::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                            |     |
[INFO] [stdout]     |                                            |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                            expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 150 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 151 |         num_players: usize,
[INFO] [stdout] 152 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 153 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let mut agent = TitForTwoTats::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                            +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let mut agent = TitForTwoTats::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                  ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let mut agent = TitForTwoTats::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                       ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:688:32
[INFO] [stdout]     |
[INFO] [stdout] 688 |         let action = agent.act(2);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 688 |         let action = agent.act(shared_types::RoundNumber(2));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:689:31
[INFO] [stdout]     |
[INFO] [stdout] 689 |         assert!((action.price - 1.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:694:25
[INFO] [stdout]     |
[INFO] [stdout] 694 |         let mut agent = TitForTwoTats::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                            |     |
[INFO] [stdout]     |                                            |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                            expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 150 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 151 |         num_players: usize,
[INFO] [stdout] 152 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 153 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 694 |         let mut agent = TitForTwoTats::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                            +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 694 |         let mut agent = TitForTwoTats::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                  ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 694 |         let mut agent = TitForTwoTats::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                       ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:698:32
[INFO] [stdout]     |
[INFO] [stdout] 698 |         let action = agent.act(3);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 698 |         let action = agent.act(shared_types::RoundNumber(3));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:699:31
[INFO] [stdout]     |
[INFO] [stdout] 699 |         assert!((action.price - 5.0).abs() < 1e-10); // Only 1 consecutive
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:706:25
[INFO] [stdout]     |
[INFO] [stdout] 706 |         let mut agent = SuspiciousTitForTat::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                  |     |
[INFO] [stdout]     |                                                  |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                  expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 270 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 271 |         _num_players: usize,
[INFO] [stdout] 272 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 273 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 706 |         let mut agent = SuspiciousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                                  +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 706 |         let mut agent = SuspiciousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 706 |         let mut agent = SuspiciousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                             ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:707:32
[INFO] [stdout]     |
[INFO] [stdout] 707 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 707 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:708:31
[INFO] [stdout]     |
[INFO] [stdout] 708 |         assert!((action.price - 1.0).abs() < 1e-10); // Starts with punishment
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:713:25
[INFO] [stdout]     |
[INFO] [stdout] 713 |         let mut agent = SuspiciousTitForTat::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                  |     |
[INFO] [stdout]     |                                                  |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                  expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 270 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 271 |         _num_players: usize,
[INFO] [stdout] 272 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 273 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 713 |         let mut agent = SuspiciousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                                  +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 713 |         let mut agent = SuspiciousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 713 |         let mut agent = SuspiciousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                             ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:715:32
[INFO] [stdout]     |
[INFO] [stdout] 715 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 715 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:716:31
[INFO] [stdout]     |
[INFO] [stdout] 716 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:721:21
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let agent = SuspiciousTitForTat::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                              |     |
[INFO] [stdout]     |                                              |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                              expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 270 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 271 |         _num_players: usize,
[INFO] [stdout] 272 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 273 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let agent = SuspiciousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                              +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let agent = SuspiciousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                    ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let agent = SuspiciousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:729:25
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let mut agent = GenerousTitForTat::new(0, 2, 5.0, 1.0, 0.5);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                |     |
[INFO] [stdout]     |                                                |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:376:12
[INFO] [stdout]     |
[INFO] [stdout] 376 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 377 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 378 |         _num_players: usize,
[INFO] [stdout] 379 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 380 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let mut agent = GenerousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 0.5);
[INFO] [stdout]     |                                                +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let mut agent = GenerousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0, 0.5);
[INFO] [stdout]     |                                                      ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let mut agent = GenerousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0), 0.5);
[INFO] [stdout]     |                                                           ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:730:32
[INFO] [stdout]     |
[INFO] [stdout] 730 |         let action = agent.act(0);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 730 |         let action = agent.act(shared_types::RoundNumber(0));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:731:31
[INFO] [stdout]     |
[INFO] [stdout] 731 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:736:25
[INFO] [stdout]     |
[INFO] [stdout] 736 |         let mut agent = GenerousTitForTat::new(0, 2, 5.0, 1.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                |     |
[INFO] [stdout]     |                                                |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:376:12
[INFO] [stdout]     |
[INFO] [stdout] 376 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 377 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 378 |         _num_players: usize,
[INFO] [stdout] 379 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 380 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 736 |         let mut agent = GenerousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 1.0);
[INFO] [stdout]     |                                                +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 736 |         let mut agent = GenerousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0, 1.0);
[INFO] [stdout]     |                                                      ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 736 |         let mut agent = GenerousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0), 1.0);
[INFO] [stdout]     |                                                           ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:738:32
[INFO] [stdout]     |
[INFO] [stdout] 738 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 738 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:739:31
[INFO] [stdout]     |
[INFO] [stdout] 739 |         assert!((action.price - 5.0).abs() < 1e-10); // Always generous
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:744:25
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut agent = GenerousTitForTat::new(0, 2, 5.0, 1.0, 0.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                |     |
[INFO] [stdout]     |                                                |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:376:12
[INFO] [stdout]     |
[INFO] [stdout] 376 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 377 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 378 |         _num_players: usize,
[INFO] [stdout] 379 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 380 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut agent = GenerousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 0.0);
[INFO] [stdout]     |                                                +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut agent = GenerousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0, 0.0);
[INFO] [stdout]     |                                                      ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut agent = GenerousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0), 0.0);
[INFO] [stdout]     |                                                           ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:746:32
[INFO] [stdout]     |
[INFO] [stdout] 746 |         let action = agent.act(1);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 746 |         let action = agent.act(shared_types::RoundNumber(1));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:747:31
[INFO] [stdout]     |
[INFO] [stdout] 747 |         assert!((action.price - 1.0).abs() < 1e-10); // Never generous
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:752:21
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let agent = GenerousTitForTat::new(0, 2, 5.0, 1.0, 0.3);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                            |     |
[INFO] [stdout]     |                                            |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                            expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:376:12
[INFO] [stdout]     |
[INFO] [stdout] 376 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 377 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 378 |         _num_players: usize,
[INFO] [stdout] 379 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 380 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let agent = GenerousTitForTat::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 0.3);
[INFO] [stdout]     |                                            +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let agent = GenerousTitForTat::new(0, 2, shared_types::Price(5.0), 1.0, 0.3);
[INFO] [stdout]     |                                                  ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 752 |         let agent = GenerousTitForTat::new(0, 2, 5.0, shared_types::Price(1.0), 0.3);
[INFO] [stdout]     |                                                       ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:760:25
[INFO] [stdout]     |
[INFO] [stdout] 760 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |     |
[INFO] [stdout]     |                                               |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 760 |         let mut agent = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 760 |         let mut agent = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 4);
[INFO] [stdout]     |                                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 760 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 4);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:763:32
[INFO] [stdout]     |
[INFO] [stdout] 763 |         let action = agent.act(2);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 763 |         let action = agent.act(shared_types::RoundNumber(2));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:764:31
[INFO] [stdout]     |
[INFO] [stdout] 764 |         assert!((action.price - 5.0).abs() < 1e-10); // < 50% defections
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:769:25
[INFO] [stdout]     |
[INFO] [stdout] 769 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |     |
[INFO] [stdout]     |                                               |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 769 |         let mut agent = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 769 |         let mut agent = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 4);
[INFO] [stdout]     |                                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 769 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 4);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:773:32
[INFO] [stdout]     |
[INFO] [stdout] 773 |         let action = agent.act(3);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 773 |         let action = agent.act(shared_types::RoundNumber(3));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:774:31
[INFO] [stdout]     |
[INFO] [stdout] 774 |         assert!((action.price - 1.0).abs() < 1e-10); // 100% defections
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:779:25
[INFO] [stdout]     |
[INFO] [stdout] 779 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 3);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |     |
[INFO] [stdout]     |                                               |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 779 |         let mut agent = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 3);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 779 |         let mut agent = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 3);
[INFO] [stdout]     |                                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 779 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 3);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:786:32
[INFO] [stdout]     |
[INFO] [stdout] 786 |         let action = agent.act(5);
[INFO] [stdout]     |                            --- ^ expected `RoundNumber`, found integer
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:27:8
[INFO] [stdout]     |
[INFO] [stdout]  27 |     fn act(&mut self, round: RoundNumber) -> PlayerAction;
[INFO] [stdout]     |        ^^^            -----
[INFO] [stdout] help: try wrapping the expression in `shared_types::RoundNumber`
[INFO] [stdout]     |
[INFO] [stdout] 786 |         let action = agent.act(shared_types::RoundNumber(5));
[INFO] [stdout]     |                                ++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: cannot subtract `{float}` from `std::option::Option<shared_types::Price>`
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:787:31
[INFO] [stdout]     |
[INFO] [stdout] 787 |         assert!((action.price - 5.0).abs() < 1e-10);
[INFO] [stdout]     |                  ------------ ^ --- {float}
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  std::option::Option<shared_types::Price>
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<shared_types::Price>` does not implement `Sub<{float}>`
[INFO] [stdout]    --> /rustc/a611f2a14e38407ec6717a86a01424ee6fc80762/library/core/src/option.rs:600:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::option::Option<shared_types::Price>` is defined in another crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:792:25
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |     |
[INFO] [stdout]     |                                               |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut agent = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut agent = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 4);
[INFO] [stdout]     |                                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 4);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:800:25
[INFO] [stdout]     |
[INFO] [stdout] 800 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |     |
[INFO] [stdout]     |                                               |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 800 |         let mut agent = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 4);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 800 |         let mut agent = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 4);
[INFO] [stdout]     |                                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 800 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 4);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:809:25
[INFO] [stdout]     |
[INFO] [stdout] 809 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 3);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                               |     |
[INFO] [stdout]     |                                               |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                               expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 809 |         let mut agent = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 3);
[INFO] [stdout]     |                                               +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 809 |         let mut agent = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 3);
[INFO] [stdout]     |                                                     ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 809 |         let mut agent = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 3);
[INFO] [stdout]     |                                                          ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:814:26
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let mut agent2 = BoundedMemoryTFT::new(0, 2, 5.0, 1.0, 3);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                |     |
[INFO] [stdout]     |                                                |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                                expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:497:12
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 498 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout] 499 |         _num_players: usize,
[INFO] [stdout] 500 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 501 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let mut agent2 = BoundedMemoryTFT::new(shared_types::PlayerId(0), 2, 5.0, 1.0, 3);
[INFO] [stdout]     |                                                +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let mut agent2 = BoundedMemoryTFT::new(0, 2, shared_types::Price(5.0), 1.0, 3);
[INFO] [stdout]     |                                                      ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let mut agent2 = BoundedMemoryTFT::new(0, 2, 5.0, shared_types::Price(1.0), 3);
[INFO] [stdout]     |                                                           ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:821:25
[INFO] [stdout]     |
[INFO] [stdout] 821 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, 1.0);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^ -     ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                             |     |
[INFO] [stdout]     |                                             |     expected `Price`, found floating-point number
[INFO] [stdout]     |                                             expected `PlayerId`, found integer
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> implementation/crates/collusion-core/src/tit_for_tat.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout]  33 |         player_id: PlayerId,
[INFO] [stdout]     |         -------------------
[INFO] [stdout]  34 |         num_players: usize,
[INFO] [stdout]  35 |         cooperative_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout]  36 |         punishment_price: Price,
[INFO] [stdout]     |         -----------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::PlayerId`
[INFO] [stdout]     |
[INFO] [stdout] 821 |         let mut agent = TitForTatAgent::new(shared_types::PlayerId(0), 2, 5.0, 1.0);
[INFO] [stdout]     |                                             +++++++++++++++++++++++ +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 821 |         let mut agent = TitForTatAgent::new(0, 2, shared_types::Price(5.0), 1.0);
[INFO] [stdout]     |                                                   ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 821 |         let mut agent = TitForTatAgent::new(0, 2, 5.0, shared_types::Price(1.0));
[INFO] [stdout]     |                                                        ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithm::PricingAlgorithm`
[INFO] [stdout]  --> implementation/crates/collusion-core/src/scenario.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::algorithm::PricingAlgorithm;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `z`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:330:13
[INFO] [stdout]     |
[INFO] [stdout] 330 |         let z = normal_quantile(1.0 - alpha);
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_z`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pairs`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/correlation_tests.rs:489:13
[INFO] [stdout]     |
[INFO] [stdout] 489 |         let pairs: Vec<f64> = (0..n)
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_pairs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/correlation_tests.rs:493:13
[INFO] [stdout]     |
[INFO] [stdout] 493 |         let engine = BootstrapEngine {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `reject_null` on type `HypothesisTestResult`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:763:21
[INFO] [stdout]     |
[INFO] [stdout] 763 |         assert!(htr.reject_null);
[INFO] [stdout]     |                     ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `test_id`, `test_name`, `test_statistic`, `p_value`, `reject` ... and 5 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Logit` has no field named `mu`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:813:40
[INFO] [stdout]     |
[INFO] [stdout] 813 |         let ds = DemandSystem::Logit { mu: 0.5, a_0: 0.0 };
[INFO] [stdout]     |                                        ^^ `shared_types::DemandSystem::Logit` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `temperature`, `outside_option_value`, `market_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0559]: variant `shared_types::DemandSystem::Logit` has no field named `a_0`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:813:49
[INFO] [stdout]     |
[INFO] [stdout] 813 |         let ds = DemandSystem::Logit { mu: 0.5, a_0: 0.0 };
[INFO] [stdout]     |                                                 ^^^ `shared_types::DemandSystem::Logit` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `temperature`, `outside_option_value`, `market_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:888:27
[INFO] [stdout]     |
[INFO] [stdout] 888 |         let result = test.run(&[prices1, prices2], 2.0, 8.0).unwrap();
[INFO] [stdout]     |                           ^^^                      ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                    |
[INFO] [stdout]     |                                                    expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:532:12
[INFO] [stdout]     |
[INFO] [stdout] 532 |     pub fn run(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |         competitive_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 536 |         monopoly_price: Price,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 888 |         let result = test.run(&[prices1, prices2], shared_types::Price(2.0), 8.0).unwrap();
[INFO] [stdout]     |                                                    ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 888 |         let result = test.run(&[prices1, prices2], 2.0, shared_types::Price(8.0)).unwrap();
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:900:27
[INFO] [stdout]     |
[INFO] [stdout] 900 |         let result = test.run(&[prices1, prices2], 2.0, 8.0).unwrap();
[INFO] [stdout]     |                           ^^^                      ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                    |
[INFO] [stdout]     |                                                    expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:532:12
[INFO] [stdout]     |
[INFO] [stdout] 532 |     pub fn run(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |         competitive_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 536 |         monopoly_price: Price,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 900 |         let result = test.run(&[prices1, prices2], shared_types::Price(2.0), 8.0).unwrap();
[INFO] [stdout]     |                                                    ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 900 |         let result = test.run(&[prices1, prices2], 2.0, shared_types::Price(8.0)).unwrap();
[INFO] [stdout]     |                                                         ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:909:22
[INFO] [stdout]     |
[INFO] [stdout] 909 |         assert!(test.run(&[], 2.0, 8.0).is_err());
[INFO] [stdout]     |                      ^^^      ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:532:12
[INFO] [stdout]     |
[INFO] [stdout] 532 |     pub fn run(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |         competitive_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 536 |         monopoly_price: Price,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 909 |         assert!(test.run(&[], shared_types::Price(2.0), 8.0).is_err());
[INFO] [stdout]     |                               ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 909 |         assert!(test.run(&[], 2.0, shared_types::Price(8.0)).is_err());
[INFO] [stdout]     |                                    ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:919:28
[INFO] [stdout]     |
[INFO] [stdout] 919 |         let results = test.run_all_tiers(&[prices1, prices2], 2.0, 8.0).unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^                      ---  --- expected `Price`, found floating-point number
[INFO] [stdout]     |                                                               |
[INFO] [stdout]     |                                                               expected `Price`, found floating-point number
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> implementation/crates/stat-tests/src/composite_test.rs:662:12
[INFO] [stdout]     |
[INFO] [stdout] 662 |     pub fn run_all_tiers(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |         competitive_price: Price,
[INFO] [stdout]     |         ------------------------
[INFO] [stdout] 666 |         monopoly_price: Price,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 919 |         let results = test.run_all_tiers(&[prices1, prices2], shared_types::Price(2.0), 8.0).unwrap();
[INFO] [stdout]     |                                                               ++++++++++++++++++++   +
[INFO] [stdout] help: try wrapping the expression in `shared_types::Price`
[INFO] [stdout]     |
[INFO] [stdout] 919 |         let results = test.run_all_tiers(&[prices1, prices2], 2.0, shared_types::Price(8.0)).unwrap();
[INFO] [stdout]     |                                                                    ++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_firms`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:400:13
[INFO] [stdout]     |
[INFO] [stdout] 400 |         let n_firms = firm_prices.len();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_firms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `speed_sd`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:429:13
[INFO] [stdout]     |
[INFO] [stdout] 429 |         let speed_sd = std_dev(&convergence_speeds);
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_speed_sd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NullDistribution`
[INFO] [stdout]   --> implementation/crates/stat-tests/src/composite_test.rs:24:40
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ConservativeNull, NullCalibration, NullDistribution, SimulatedNull,
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `j_max` is assigned to, but never used
[INFO] [stdout]    --> implementation/crates/stat-tests/src/closed_testing.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let mut j_max = m;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_j_max` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `j_max` is never read
[INFO] [stdout]    --> implementation/crates/stat-tests/src/closed_testing.rs:364:17
[INFO] [stdout]     |
[INFO] [stdout] 364 |                 j_max = j;
[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: `p_values`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/closed_testing.rs:654:9
[INFO] [stdout]     |
[INFO] [stdout] 654 |         p_values: &[f64],
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_p_values`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `trajectory` is never read
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:610:5
[INFO] [stdout]     |
[INFO] [stdout] 609 | pub struct PassiveOracle {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 610 |     trajectory: PriceTrajectory,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> implementation/crates/collusion-core/src/algorithm.rs:619:8
[INFO] [stdout]     |
[INFO] [stdout] 613 | impl PassiveOracle {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 619 |     fn access_level(&self) -> OracleAccessLevel {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     fn observe_trajectory(&mut self, trajectory: &PriceTrajectory) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     fn get_trajectory(&self) -> &PriceTrajectory {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 631 |     fn deviation_at(&self, _round: RoundNumber) -> Option<&DeviationRecord> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |     fn checkpoints(&self) -> &[StateCheckpoint] {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 639 |     fn rewind_to(&mut self, _round: RoundNumber) -> CollusionResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 645 |     fn insert_deviation(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_price_variance` is never used
[INFO] [stdout]    --> implementation/crates/collusion-core/src/detector.rs:842:4
[INFO] [stdout]     |
[INFO] [stdout] 842 | fn compute_price_variance(trajectory: &PriceTrajectory) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `price_to_action` is never used
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl StateDiscretizer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn price_to_action(&self, price: Price, num_actions: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_empty` is never used
[INFO] [stdout]    --> implementation/crates/collusion-core/src/q_learning.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl ReplayBuffer {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 196 |     fn is_empty(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `num_players` is never read
[INFO] [stdout]   --> implementation/crates/collusion-core/src/tit_for_tat.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct TitForTatAgent {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 21 |     player_id: PlayerId,
[INFO] [stdout] 22 |     num_players: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `z`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/null_distribution.rs:330:13
[INFO] [stdout]     |
[INFO] [stdout] 330 |         let z = normal_quantile(1.0 - alpha);
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_z`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pairs`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/correlation_tests.rs:489:13
[INFO] [stdout]     |
[INFO] [stdout] 489 |         let pairs: Vec<f64> = (0..n)
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_pairs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/correlation_tests.rs:493:13
[INFO] [stdout]     |
[INFO] [stdout] 493 |         let engine = BootstrapEngine {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0277, E0308, E0369, E0615, E0689.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_firms`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:400:13
[INFO] [stdout]     |
[INFO] [stdout] 400 |         let n_firms = firm_prices.len();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_firms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `speed_sd`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/price_tests.rs:429:13
[INFO] [stdout]     |
[INFO] [stdout] 429 |         let speed_sd = std_dev(&convergence_speeds);
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_speed_sd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `collusion-core` (lib test) due to 162 previous errors; 10 warnings emitted
[INFO] [stdout] warning: variable `j_max` is assigned to, but never used
[INFO] [stdout]    --> implementation/crates/stat-tests/src/closed_testing.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let mut j_max = m;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_j_max` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `j_max` is never read
[INFO] [stdout]    --> implementation/crates/stat-tests/src/closed_testing.rs:364:17
[INFO] [stdout]     |
[INFO] [stdout] 364 |                 j_max = j;
[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: `p_values`
[INFO] [stdout]    --> implementation/crates/stat-tests/src/closed_testing.rs:654:9
[INFO] [stdout]     |
[INFO] [stdout] 654 |         p_values: &[f64],
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_p_values`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0559, E0560, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `stat-tests` (lib test) due to 30 previous errors; 20 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "01c4aaa4aa9e46f18e362b1fb7fdb2768d62c72210ab4e8d7ba14161538e3267", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "01c4aaa4aa9e46f18e362b1fb7fdb2768d62c72210ab4e8d7ba14161538e3267", kill_on_drop: false }`
[INFO] [stdout] 01c4aaa4aa9e46f18e362b1fb7fdb2768d62c72210ab4e8d7ba14161538e3267
