[INFO] cloning repository https://github.com/CodeMonkeyMax/MoonshineRunner
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/CodeMonkeyMax/MoonshineRunner" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCodeMonkeyMax%2FMoonshineRunner", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCodeMonkeyMax%2FMoonshineRunner'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d9c382d210f1ea256817e5b968554f4b413ed946
[INFO] checking CodeMonkeyMax/MoonshineRunner against master#46424fb5054f211ec836c5c03159f92e46bb35ac for pr-139042
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCodeMonkeyMax%2FMoonshineRunner" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/CodeMonkeyMax/MoonshineRunner on toolchain 46424fb5054f211ec836c5c03159f92e46bb35ac
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/CodeMonkeyMax/MoonshineRunner
[INFO] finished tweaking git repo https://github.com/CodeMonkeyMax/MoonshineRunner
[INFO] tweaked toml for git repo https://github.com/CodeMonkeyMax/MoonshineRunner written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/CodeMonkeyMax/MoonshineRunner 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" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 56d6e5cadfffd2e0ce268c422d497eddd950063cb9afea60934fde97a3a8a958
[INFO] running `Command { std: "docker" "start" "-a" "56d6e5cadfffd2e0ce268c422d497eddd950063cb9afea60934fde97a3a8a958", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "56d6e5cadfffd2e0ce268c422d497eddd950063cb9afea60934fde97a3a8a958", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "56d6e5cadfffd2e0ce268c422d497eddd950063cb9afea60934fde97a3a8a958", kill_on_drop: false }`
[INFO] [stdout] 56d6e5cadfffd2e0ce268c422d497eddd950063cb9afea60934fde97a3a8a958
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1969f63e43f83c43c500a35491fcb8e963053b37b3c3cdd569ca6feb0186d200
[INFO] running `Command { std: "docker" "start" "-a" "1969f63e43f83c43c500a35491fcb8e963053b37b3c3cdd569ca6feb0186d200", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.146
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]    Compiling log v0.4.18
[INFO] [stderr]    Compiling autocfg v1.1.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.8
[INFO] [stderr]    Compiling signal-hook v0.3.15
[INFO] [stderr]     Checking smallvec v1.10.0
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]    Compiling lock_api v0.4.10
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking getrandom v0.2.10
[INFO] [stderr]     Checking mio v0.8.8
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking signal-hook-mio v0.2.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking crossterm v0.26.1
[INFO] [stderr]     Checking my-project v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: found module declaration for lib.rs
[INFO] [stdout]   --> src/main.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub mod lib;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: lib.rs is the root of this crate's library target
[INFO] [stdout]    = help: to refer to it from other targets, use the library's name as the path
[INFO] [stdout]    = note: `#[warn(special_module_name)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stat::Stat`
[INFO] [stdout]  --> src/main.rs:7:51
[INFO] [stdout]   |
[INFO] [stdout] 7 | use lib::{car::Car, player::Player, route::Route, stat::Stat, sutil::*};
[INFO] [stdout]   |                                                   ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]  --> src/main.rs:9:46
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::{io::Write, thread, time::Duration, write};
[INFO] [stdout]   |                                              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stat::Stat`
[INFO] [stdout]  --> src/lib/player.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::{car::*, stat::Stat, still::Still, wallet::Wallet};
[INFO] [stdout]   |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExecutableCommand`, `QueueableCommand`, `Result`, `cursor`, `self`, and `terminal`
[INFO] [stdout]  --> src/lib/sutil.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     cursor, execute,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 5 |     style::{self, Stylize},
[INFO] [stdout]   |             ^^^^
[INFO] [stdout] 6 |     terminal, ExecutableCommand, QueueableCommand, Result,
[INFO] [stdout]   |     ^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stdout`
[INFO] [stdout]  --> src/lib/sutil.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{stdout, Write};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: found module declaration for lib.rs
[INFO] [stdout]   --> src/main.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub mod lib;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: lib.rs is the root of this crate's library target
[INFO] [stdout]    = help: to refer to it from other targets, use the library's name as the path
[INFO] [stdout]    = note: `#[warn(special_module_name)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stat::Stat`
[INFO] [stdout]  --> src/main.rs:7:51
[INFO] [stdout]   |
[INFO] [stdout] 7 | use lib::{car::Car, player::Player, route::Route, stat::Stat, sutil::*};
[INFO] [stdout]   |                                                   ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]  --> src/main.rs:9:46
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::{io::Write, thread, time::Duration, write};
[INFO] [stdout]   |                                              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stat::Stat`
[INFO] [stdout]  --> src/lib/player.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::{car::*, stat::Stat, still::Still, wallet::Wallet};
[INFO] [stdout]   |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExecutableCommand`, `QueueableCommand`, `Result`, `cursor`, `self`, and `terminal`
[INFO] [stdout]  --> src/lib/sutil.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     cursor, execute,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 5 |     style::{self, Stylize},
[INFO] [stdout]   |             ^^^^
[INFO] [stdout] 6 |     terminal, ExecutableCommand, QueueableCommand, Result,
[INFO] [stdout]   |     ^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stdout`
[INFO] [stdout]  --> src/lib/sutil.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{stdout, Write};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0015]: cannot call non-const associated function `car::Car::default_car` in statics
[INFO] [stdout]   --> src/main.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 |     car: Car::default_car(),
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: calls in statics are limited to constant functions, tuple structs and tuple variants
[INFO] [stdout]    = note: consider wrapping this expression in `std::sync::LazyLock::new(|| ...)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0015]: cannot call non-const associated function `Still::default` in statics
[INFO] [stdout]   --> src/main.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     still: Still::default(),
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: calls in statics are limited to constant functions, tuple structs and tuple variants
[INFO] [stdout]    = note: consider wrapping this expression in `std::sync::LazyLock::new(|| ...)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0015]: cannot call non-const associated function `car::Car::default_car` in statics
[INFO] [stdout]   --> src/main.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 |     car: Car::default_car(),
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: calls in statics are limited to constant functions, tuple structs and tuple variants
[INFO] [stdout]    = note: consider wrapping this expression in `std::sync::LazyLock::new(|| ...)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0015]: cannot call non-const associated function `Still::default` in statics
[INFO] [stdout]   --> src/main.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     still: Still::default(),
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: calls in statics are limited to constant functions, tuple structs and tuple variants
[INFO] [stdout]    = note: consider wrapping this expression in `std::sync::LazyLock::new(|| ...)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/lib/sutil.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{stdout, Write};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `car_class`
[INFO] [stdout]    --> src/lib/car.rs:139:15
[INFO] [stdout]     |
[INFO] [stdout] 139 | fn make_speed(car_class: &char, car_type: &String) -> Stat {
[INFO] [stdout]     |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_car_class`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `class`
[INFO] [stdout]    --> src/lib/car.rs:188:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | fn make_type(class: char, tier: u8) -> String {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tier`
[INFO] [stdout]    --> src/lib/car.rs:216:16
[INFO] [stdout]     |
[INFO] [stdout] 216 | fn make_prefix(tier: u8) -> String {
[INFO] [stdout]     |                ^^^^ help: if this is intentional, prefix it with an underscore: `_tier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/lib/sutil.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{stdout, Write};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `car_class`
[INFO] [stdout]    --> src/lib/car.rs:139:15
[INFO] [stdout]     |
[INFO] [stdout] 139 | fn make_speed(car_class: &char, car_type: &String) -> Stat {
[INFO] [stdout]     |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_car_class`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `class`
[INFO] [stdout]    --> src/lib/car.rs:188:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | fn make_type(class: char, tier: u8) -> String {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tier`
[INFO] [stdout]    --> src/lib/car.rs:216:16
[INFO] [stdout]     |
[INFO] [stdout] 216 | fn make_prefix(tier: u8) -> String {
[INFO] [stdout]     |                ^^^^ help: if this is intentional, prefix it with an underscore: `_tier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `PLAYER.car` as mutable, as `PLAYER` is an immutable static item
[INFO] [stdout]   --> src/main.rs:54:17
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 PLAYER.car.reset();
[INFO] [stdout]    |                 ^^^^^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `PLAYER.car` as mutable, as `PLAYER` is an immutable static item
[INFO] [stdout]   --> src/main.rs:54:17
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 PLAYER.car.reset();
[INFO] [stdout]    |                 ^^^^^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:86:13
[INFO] [stdout]    |
[INFO] [stdout] 86 |         for j in 0..i {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:86:13
[INFO] [stdout]    |
[INFO] [stdout] 86 |         for j in 0..i {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         for j in i..36 - 1 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         for j in i..36 - 1 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of a shared reference
[INFO] [stdout]    --> src/main.rs:105:28
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let still: Still = *PLAYER.get_still();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^ move occurs because value has type `Still`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider removing the dereference here
[INFO] [stdout]     |
[INFO] [stdout] 105 -         let still: Still = *PLAYER.get_still();
[INFO] [stdout] 105 +         let still: Still = PLAYER.get_still();
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 105 -         let still: Still = *PLAYER.get_still();
[INFO] [stdout] 105 +         let still: Still = PLAYER.get_still().clone();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quantity`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         PLAYER.car.cargo_quantity = calculate_cargo_quantity(output, PLAYER.car.cgo.real);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quality`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:138:17
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 PLAYER.car.cargo_quality = 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quality`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 PLAYER.car.cargo_quality = 2;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quality`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:154:17
[INFO] [stdout]     |
[INFO] [stdout] 154 |                 PLAYER.car.cargo_quality = 3;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 185 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of a shared reference
[INFO] [stdout]    --> src/main.rs:105:28
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let still: Still = *PLAYER.get_still();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^ move occurs because value has type `Still`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider removing the dereference here
[INFO] [stdout]     |
[INFO] [stdout] 105 -         let still: Still = *PLAYER.get_still();
[INFO] [stdout] 105 +         let still: Still = PLAYER.get_still();
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 105 -         let still: Still = *PLAYER.get_still();
[INFO] [stdout] 105 +         let still: Still = PLAYER.get_still().clone();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quantity`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         PLAYER.car.cargo_quantity = calculate_cargo_quantity(output, PLAYER.car.cgo.real);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quality`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:138:17
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 PLAYER.car.cargo_quality = 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quality`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 PLAYER.car.cargo_quality = 2;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cargo_quality`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:154:17
[INFO] [stdout]     |
[INFO] [stdout] 154 |                 PLAYER.car.cargo_quality = 3;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 185 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.current_durability`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |         PLAYER.car.current_durability = PLAYER.car.dur.real;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to data in a `&` reference
[INFO] [stdout]    --> src/main.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |             PLAYER.get_car().current_durability = PLAYER.get_car().dur.real;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mult` is never read
[INFO] [stdout]    --> src/main.rs:301:13
[INFO] [stdout]     |
[INFO] [stdout] 301 |     let mut mult: f64 = 1.0;
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.current_durability`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |         PLAYER.car.current_durability = PLAYER.car.dur.real;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to data in a `&` reference
[INFO] [stdout]    --> src/main.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |             PLAYER.get_car().current_durability = PLAYER.get_car().dur.real;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mult` is never read
[INFO] [stdout]    --> src/main.rs:301:13
[INFO] [stdout]     |
[INFO] [stdout] 301 |     let mut mult: f64 = 1.0;
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:330:5
[INFO] [stdout]     |
[INFO] [stdout] 330 |     PLAYER.wallet.add(money_increment as i32);
[INFO] [stdout]     |     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:330:5
[INFO] [stdout]     |
[INFO] [stdout] 330 |     PLAYER.wallet.add(money_increment as i32);
[INFO] [stdout]     |     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:336:9
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let mut user_entry: Option<char> = get_instant_input(&['y', 'n']);
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:379:5
[INFO] [stdout]     |
[INFO] [stdout] 379 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:330:5
[INFO] [stdout]     |
[INFO] [stdout] 330 |     PLAYER.wallet.add(money_increment as i32);
[INFO] [stdout]     |     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:330:5
[INFO] [stdout]     |
[INFO] [stdout] 330 |     PLAYER.wallet.add(money_increment as i32);
[INFO] [stdout]     |     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:336:9
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let mut user_entry: Option<char> = get_instant_input(&['y', 'n']);
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:379:5
[INFO] [stdout]     |
[INFO] [stdout] 379 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:384:21
[INFO] [stdout]     |
[INFO] [stdout] 384 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:384:21
[INFO] [stdout]     |
[INFO] [stdout] 384 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:384:21
[INFO] [stdout]     |
[INFO] [stdout] 384 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:384:21
[INFO] [stdout]     |
[INFO] [stdout] 384 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:387:21
[INFO] [stdout]     |
[INFO] [stdout] 387 |                     PLAYER.car = car1;
[INFO] [stdout]     |                     ^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:394:21
[INFO] [stdout]     |
[INFO] [stdout] 394 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:394:21
[INFO] [stdout]     |
[INFO] [stdout] 394 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:397:21
[INFO] [stdout]     |
[INFO] [stdout] 397 |                     PLAYER.car = car2;
[INFO] [stdout]     |                     ^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 404 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 404 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:407:21
[INFO] [stdout]     |
[INFO] [stdout] 407 |                     PLAYER.car = car3;
[INFO] [stdout]     |                     ^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 502 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 454 |             's' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 469 |             'd' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 484 |             'c' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 499 |             c => {
[INFO] [stdout]     |             - matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 502 |             _ => {
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:556:13
[INFO] [stdout]     |
[INFO] [stdout] 556 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:556:13
[INFO] [stdout]     |
[INFO] [stdout] 508 |             's' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 523 |             'v' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 538 |             'q' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 553 |             c => {
[INFO] [stdout]     |             - matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 556 |             _ => {
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.spd.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:458:25
[INFO] [stdout]     |
[INFO] [stdout] 458 |                         PLAYER.car.spd.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:459:25
[INFO] [stdout]     |
[INFO] [stdout] 459 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:459:25
[INFO] [stdout]     |
[INFO] [stdout] 459 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.dur.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:473:25
[INFO] [stdout]     |
[INFO] [stdout] 473 |                         PLAYER.car.dur.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:474:25
[INFO] [stdout]     |
[INFO] [stdout] 474 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:474:25
[INFO] [stdout]     |
[INFO] [stdout] 474 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cgo.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:488:25
[INFO] [stdout]     |
[INFO] [stdout] 488 |                         PLAYER.car.cgo.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:489:25
[INFO] [stdout]     |
[INFO] [stdout] 489 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:489:25
[INFO] [stdout]     |
[INFO] [stdout] 489 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.still.spd.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:512:25
[INFO] [stdout]     |
[INFO] [stdout] 512 |                         PLAYER.still.spd.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:387:21
[INFO] [stdout]     |
[INFO] [stdout] 387 |                     PLAYER.car = car1;
[INFO] [stdout]     |                     ^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:513:25
[INFO] [stdout]     |
[INFO] [stdout] 513 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:513:25
[INFO] [stdout]     |
[INFO] [stdout] 513 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.still.vol.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:527:25
[INFO] [stdout]     |
[INFO] [stdout] 527 |                         PLAYER.still.vol.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:528:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:528:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.still.qlt.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:542:25
[INFO] [stdout]     |
[INFO] [stdout] 542 |                         PLAYER.still.qlt.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:543:25
[INFO] [stdout]     |
[INFO] [stdout] 543 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:543:25
[INFO] [stdout]     |
[INFO] [stdout] 543 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:657:13
[INFO] [stdout]     |
[INFO] [stdout] 657 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.current_durability`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:658:17
[INFO] [stdout]     |
[INFO] [stdout] 658 |                 PLAYER.car.current_durability -= 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:394:21
[INFO] [stdout]     |
[INFO] [stdout] 394 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:394:21
[INFO] [stdout]     |
[INFO] [stdout] 394 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:397:21
[INFO] [stdout]     |
[INFO] [stdout] 397 |                     PLAYER.car = car2;
[INFO] [stdout]     |                     ^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 404 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:404:21
[INFO] [stdout]     |
[INFO] [stdout] 404 |                     PLAYER.wallet.sub(
[INFO] [stdout]     |                     ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:407:21
[INFO] [stdout]     |
[INFO] [stdout] 407 |                     PLAYER.car = car3;
[INFO] [stdout]     |                     ^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 502 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 454 |             's' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 469 |             'd' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 484 |             'c' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 499 |             c => {
[INFO] [stdout]     |             - matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 502 |             _ => {
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:556:13
[INFO] [stdout]     |
[INFO] [stdout] 556 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:556:13
[INFO] [stdout]     |
[INFO] [stdout] 508 |             's' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 523 |             'v' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 538 |             'q' => {
[INFO] [stdout]     |             --- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 553 |             c => {
[INFO] [stdout]     |             - matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 556 |             _ => {
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.spd.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:458:25
[INFO] [stdout]     |
[INFO] [stdout] 458 |                         PLAYER.car.spd.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:459:25
[INFO] [stdout]     |
[INFO] [stdout] 459 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:459:25
[INFO] [stdout]     |
[INFO] [stdout] 459 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.dur.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:473:25
[INFO] [stdout]     |
[INFO] [stdout] 473 |                         PLAYER.car.dur.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:474:25
[INFO] [stdout]     |
[INFO] [stdout] 474 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:474:25
[INFO] [stdout]     |
[INFO] [stdout] 474 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.cgo.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:488:25
[INFO] [stdout]     |
[INFO] [stdout] 488 |                         PLAYER.car.cgo.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:489:25
[INFO] [stdout]     |
[INFO] [stdout] 489 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:489:25
[INFO] [stdout]     |
[INFO] [stdout] 489 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.still.spd.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:512:25
[INFO] [stdout]     |
[INFO] [stdout] 512 |                         PLAYER.still.spd.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:513:25
[INFO] [stdout]     |
[INFO] [stdout] 513 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:513:25
[INFO] [stdout]     |
[INFO] [stdout] 513 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.still.vol.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:527:25
[INFO] [stdout]     |
[INFO] [stdout] 527 |                         PLAYER.still.vol.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:528:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:528:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.still.qlt.real`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:542:25
[INFO] [stdout]     |
[INFO] [stdout] 542 |                         PLAYER.still.qlt.real += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `PLAYER.wallet` as `PLAYER` is a static item
[INFO] [stdout]    --> src/main.rs:543:25
[INFO] [stdout]     |
[INFO] [stdout] 543 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ move occurs because `PLAYER.wallet` has type `Wallet`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Wallet` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/lib/wallet.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout] 1   | pub struct Wallet {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/main.rs:543:25
[INFO] [stdout]     |
[INFO] [stdout] 543 |                         PLAYER.wallet.sub(cost);
[INFO] [stdout]     |                         ------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/main.rs:657:13
[INFO] [stdout]     |
[INFO] [stdout] 657 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `PLAYER.car.current_durability`, as `PLAYER` is an immutable static item
[INFO] [stdout]    --> src/main.rs:658:17
[INFO] [stdout]     |
[INFO] [stdout] 658 |                 PLAYER.car.current_durability -= 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0015, E0507, E0594, E0596.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0015`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `my-project` (bin "my-project") due to 30 previous errors; 20 warnings emitted
[INFO] [stdout] Some errors have detailed explanations: E0015, E0507, E0594, E0596.
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about an error, try `rustc --explain E0015`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `my-project` (bin "my-project" test) due to 30 previous errors; 20 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "1969f63e43f83c43c500a35491fcb8e963053b37b3c3cdd569ca6feb0186d200", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1969f63e43f83c43c500a35491fcb8e963053b37b3c3cdd569ca6feb0186d200", kill_on_drop: false }`
[INFO] [stdout] 1969f63e43f83c43c500a35491fcb8e963053b37b3c3cdd569ca6feb0186d200
