[INFO] updating cached repository https://github.com/miroslavkrysl/battleships-server
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] 46ee91198b59996a85411ffbe1a5ebd1d4672f3c
[INFO] checking miroslavkrysl/battleships-server against master#bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmiroslavkrysl%2Fbattleships-server" "/workspace/builds/worker-5/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/miroslavkrysl/battleships-server on toolchain bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/miroslavkrysl/battleships-server
[INFO] finished tweaking git repo https://github.com/miroslavkrysl/battleships-server
[INFO] tweaked toml for git repo https://github.com/miroslavkrysl/battleships-server written to /workspace/builds/worker-5/source/Cargo.toml
[INFO] crate git repo https://github.com/miroslavkrysl/battleships-server already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stdout] 447760c01fac05b6d3435e84e24a96ed6d7a53613d09f73bad29288f4442bba3
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `"docker" "start" "-a" "447760c01fac05b6d3435e84e24a96ed6d7a53613d09f73bad29288f4442bba3"`
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking rand v0.7.2
[INFO] [stderr]     Checking mio v0.6.20
[INFO] [stderr]     Checking bssrv v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] error: expected type, found `{`
[INFO] [stderr]   --> src/game/player.rs:20:65
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl Player {
[INFO] [stderr]    |             - while parsing this item list starting here
[INFO] [stderr] ...
[INFO] [stderr] 20 |     fn set_session(&self, session: Option<Arc<dyn Session>>) -> {
[INFO] [stderr]    |                                                                 ^ expected type
[INFO] [stderr] ...
[INFO] [stderr] 23 | }
[INFO] [stderr]    | - the item list ends here
[INFO] [stderr] 
[INFO] [stderr] error: expected `{`, found `}`
[INFO] [stderr]   --> src/game/game.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 46 |         if let Some(player) = self.players
[INFO] [stderr]    |         -- this `if` expression has a condition, but no block
[INFO] [stderr] 47 |     }
[INFO] [stderr]    |     ^ expected `{`
[INFO] [stderr] 
[INFO] [stderr] error[E0583]: file not found for module `net`
[INFO] [stderr]  --> src/lib.rs:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub mod net;
[INFO] [stderr]   | ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = help: to create the module `net`, create file "src/net.rs"
[INFO] [stderr] 
[INFO] [stderr] error: expected type, found `{`
[INFO] [stderr]   --> src/game/player.rs:20:65
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl Player {
[INFO] [stderr]    |             - while parsing this item list starting here
[INFO] [stderr] ...
[INFO] [stderr] 20 |     fn set_session(&self, session: Option<Arc<dyn Session>>) -> {
[INFO] [stderr]    |                                                                 ^ expected type
[INFO] [stderr] ...
[INFO] [stderr] 23 | }
[INFO] [stderr]    | - the item list ends here
[INFO] [stderr] 
[INFO] [stderr] error: expected `{`, found `}`
[INFO] [stderr]   --> src/game/game.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 46 |         if let Some(player) = self.players
[INFO] [stderr]    |         -- this `if` expression has a condition, but no block
[INFO] [stderr] 47 |     }
[INFO] [stderr]    |     ^ expected `{`
[INFO] [stderr] 
[INFO] [stderr] error: expected one of `!`, `(`, `+`, `::`, `<`, `for`, `where`, or `{`, found `<eof>`
[INFO] [stderr]   --> src/proto/message.rs:18:6
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl BsMessage
[INFO] [stderr]    |      ^^^^^^^^^ expected one of 8 possible tokens
[INFO] [stderr] 
[INFO] [stderr] error[E0583]: file not found for module `net`
[INFO] [stderr]  --> src/lib.rs:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub mod net;
[INFO] [stderr]   | ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = help: to create the module `net`, create file "src/net.rs"
[INFO] [stderr] 
[INFO] [stderr] error: expected one of `!`, `(`, `+`, `::`, `<`, `for`, `where`, or `{`, found `<eof>`
[INFO] [stderr]   --> src/proto/message.rs:18:6
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl BsMessage
[INFO] [stderr]    |      ^^^^^^^^^ expected one of 8 possible tokens
[INFO] [stderr] 
[INFO] [stderr] error: associated function in `impl` without body
[INFO] [stderr]    --> src/game/game.rs:141:5
[INFO] [stderr]     |
[INFO] [stderr] 141 |     fn spam_spam_spam(&mut self);
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
[INFO] [stderr]     |                                 |
[INFO] [stderr]     |                                 help: provide a definition for the function: `{ <body> }`
[INFO] [stderr] 
[INFO] [stderr] error[E0432]: unresolved import `crate::game::Ship`
[INFO] [stderr]  --> src/game/battlefield.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::game::Ship;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^ no `Ship` in `game`
[INFO] [stderr] 
[INFO] [stderr] error[E0432]: unresolved imports `crate::game::Fleet`, `crate::game::Battlefield`
[INFO] [stderr]  --> src/game/player.rs:1:19
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::game::{Fleet, Battlefield};
[INFO] [stderr]   |                   ^^^^^  ^^^^^^^^^^^ no `Battlefield` in `game`
[INFO] [stderr]   |                   |
[INFO] [stderr]   |                   no `Fleet` in `game`
[INFO] [stderr]   |
[INFO] [stderr] help: a similar name exists in the module
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::game::{fleet, Battlefield};
[INFO] [stderr]   |                   ^^^^^
[INFO] [stderr] help: a similar name exists in the module
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::game::{Fleet, battlefield};
[INFO] [stderr]   |                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0432]: unresolved import `super::net::error`
[INFO] [stderr]  --> src/error.rs:4:17
[INFO] [stderr]   |
[INFO] [stderr] 4 | use super::net::error::Error as NetworkError;
[INFO] [stderr]   |                 ^^^^^ could not find `error` in `net`
[INFO] [stderr] 
[INFO] [stderr] error: associated function in `impl` without body
[INFO] [stderr]    --> src/game/game.rs:141:5
[INFO] [stderr]     |
[INFO] [stderr] 141 |     fn spam_spam_spam(&mut self);
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
[INFO] [stderr]     |                                 |
[INFO] [stderr]     |                                 help: provide a definition for the function: `{ <body> }`
[INFO] [stderr] 
[INFO] [stderr] error[E0432]: unresolved import `crate::game::Ship`
[INFO] [stderr]  --> src/game/battlefield.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::game::Ship;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^ no `Ship` in `game`
[INFO] [stderr] 
[INFO] [stderr] error[E0432]: unresolved imports `crate::game::Fleet`, `crate::game::Battlefield`
[INFO] [stderr]  --> src/game/player.rs:1:19
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::game::{Fleet, Battlefield};
[INFO] [stderr]   |                   ^^^^^  ^^^^^^^^^^^ no `Battlefield` in `game`
[INFO] [stderr]   |                   |
[INFO] [stderr]   |                   no `Fleet` in `game`
[INFO] [stderr]   |
[INFO] [stderr] help: a similar name exists in the module
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::game::{fleet, Battlefield};
[INFO] [stderr]   |                   ^^^^^
[INFO] [stderr] help: a similar name exists in the module
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::game::{Fleet, battlefield};
[INFO] [stderr]   |                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0432]: unresolved import `super::net::error`
[INFO] [stderr]  --> src/error.rs:4:17
[INFO] [stderr]   |
[INFO] [stderr] 4 | use super::net::error::Error as NetworkError;
[INFO] [stderr]   |                 ^^^^^ could not find `error` in `net`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find function `is_sunk` in this scope
[INFO] [stderr]   --> src/game/fleet.rs:72:9
[INFO] [stderr]    |
[INFO] [stderr] 72 |         is_sunk()
[INFO] [stderr]    |         ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `ChoosingLayout` in this scope
[INFO] [stderr]   --> src/game/game.rs:50:6
[INFO] [stderr]    |
[INFO] [stderr] 50 | impl ChoosingLayout {
[INFO] [stderr]    |      ^^^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0422]: cannot find struct, variant or union type `ChoosingLayout` in this scope
[INFO] [stderr]   --> src/game/game.rs:52:9
[INFO] [stderr]    |
[INFO] [stderr] 52 |         ChoosingLayout{
[INFO] [stderr]    |         ^^^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `ActualResponseState` in this scope
[INFO] [stderr]   --> src/game/game.rs:88:16
[INFO] [stderr]    |
[INFO] [stderr] 88 |     state: Box<ActualResponseState>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 98 | trait ResponseState {}
[INFO] [stderr]    | ------------------- similarly named trait `ResponseState` defined here
[INFO] [stderr]    |
[INFO] [stderr] help: a trait with a similar name exists
[INFO] [stderr]    |
[INFO] [stderr] 88 |     state: Box<ResponseState>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^
[INFO] [stderr] help: you might be missing a type parameter
[INFO] [stderr]    |
[INFO] [stderr] 86 | struct HttpResponse<S: ResponseState, ActualResponseState> {
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::btree_map::Entry`
[INFO] [stderr]  --> src/game/fleet.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::collections::btree_map::Entry;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RwLock`
[INFO] [stderr]  --> src/game/game.rs:2:22
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::sync::{Arc, RwLock, Mutex};
[INFO] [stderr]   |                      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io`
[INFO] [stderr]  --> src/error.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::io;
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0038]: the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]   --> src/game/player.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 5  | trait Session{
[INFO] [stderr]    |       ------- this trait cannot be made into an object...
[INFO] [stderr] 6  |     fn active() -> bool;
[INFO] [stderr]    |        ------ ...because associated function `active` has no `self` parameter
[INFO] [stderr] ...
[INFO] [stderr] 10 |     session: Option<Arc<dyn Session>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]    |
[INFO] [stderr] help: consider turning `active` into a method by giving it a `&self` argument or constraining it so it does not apply to trait objects
[INFO] [stderr]    |
[INFO] [stderr] 6  |     fn active() -> bool where Self: Sized;
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find function `is_sunk` in this scope
[INFO] [stderr]   --> src/game/fleet.rs:72:9
[INFO] [stderr]    |
[INFO] [stderr] 72 |         is_sunk()
[INFO] [stderr]    |         ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `ChoosingLayout` in this scope
[INFO] [stderr]   --> src/game/game.rs:50:6
[INFO] [stderr]    |
[INFO] [stderr] 50 | impl ChoosingLayout {
[INFO] [stderr]    |      ^^^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0422]: cannot find struct, variant or union type `ChoosingLayout` in this scope
[INFO] [stderr]   --> src/game/game.rs:52:9
[INFO] [stderr]    |
[INFO] [stderr] 52 |         ChoosingLayout{
[INFO] [stderr]    |         ^^^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `ActualResponseState` in this scope
[INFO] [stderr]   --> src/game/game.rs:88:16
[INFO] [stderr]    |
[INFO] [stderr] 88 |     state: Box<ActualResponseState>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 98 | trait ResponseState {}
[INFO] [stderr]    | ------------------- similarly named trait `ResponseState` defined here
[INFO] [stderr]    |
[INFO] [stderr] help: a trait with a similar name exists
[INFO] [stderr]    |
[INFO] [stderr] 88 |     state: Box<ResponseState>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^
[INFO] [stderr] help: you might be missing a type parameter
[INFO] [stderr]    |
[INFO] [stderr] 86 | struct HttpResponse<S: ResponseState, ActualResponseState> {
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::btree_map::Entry`
[INFO] [stderr]  --> src/game/fleet.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::collections::btree_map::Entry;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RwLock`
[INFO] [stderr]  --> src/game/game.rs:2:22
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::sync::{Arc, RwLock, Mutex};
[INFO] [stderr]   |                      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io`
[INFO] [stderr]  --> src/error.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::io;
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0038]: the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]   --> src/game/player.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 5  | trait Session{
[INFO] [stderr]    |       ------- this trait cannot be made into an object...
[INFO] [stderr] 6  |     fn active() -> bool;
[INFO] [stderr]    |        ------ ...because associated function `active` has no `self` parameter
[INFO] [stderr] ...
[INFO] [stderr] 10 |     session: Option<Arc<dyn Session>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]    |
[INFO] [stderr] help: consider turning `active` into a method by giving it a `&self` argument or constraining it so it does not apply to trait objects
[INFO] [stderr]    |
[INFO] [stderr] 6  |     fn active() -> bool where Self: Sized;
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:127:9
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 127 | impl<S> HttpResponse<S> {
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider restricting type parameter `S`
[INFO] [stderr]     |
[INFO] [stderr] 127 | impl<S: game::game::ResponseState> HttpResponse<S> {
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:138:9
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 138 | impl<S> HttpResponse<S>
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider further restricting this bound
[INFO] [stderr]     |
[INFO] [stderr] 139 |     where S: SendingState + game::game::ResponseState
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0038]: the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]   --> src/game/player.rs:16:26
[INFO] [stderr]    |
[INFO] [stderr] 5  | trait Session{
[INFO] [stderr]    |       ------- this trait cannot be made into an object...
[INFO] [stderr] 6  |     fn active() -> bool;
[INFO] [stderr]    |        ------ ...because associated function `active` has no `self` parameter
[INFO] [stderr] ...
[INFO] [stderr] 16 |     fn session(&self) -> Arc<dyn Session> {
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^ the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]    |
[INFO] [stderr] help: consider turning `active` into a method by giving it a `&self` argument or constraining it so it does not apply to trait objects
[INFO] [stderr]    |
[INFO] [stderr] 6  |     fn active() -> bool where Self: Sized;
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:127:9
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 127 | impl<S> HttpResponse<S> {
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider restricting type parameter `S`
[INFO] [stderr]     |
[INFO] [stderr] 127 | impl<S: game::game::ResponseState> HttpResponse<S> {
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:128:21
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 128 |     fn bytes_so_far(&self) -> usize { /* ... */ }
[INFO] [stderr]     |                     ^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider restricting type parameter `S`
[INFO] [stderr]     |
[INFO] [stderr] 127 | impl<S: game::game::ResponseState> HttpResponse<S> {
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:138:9
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 138 | impl<S> HttpResponse<S>
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider further restricting this bound
[INFO] [stderr]     |
[INFO] [stderr] 139 |     where S: SendingState + game::game::ResponseState
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0038]: the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]   --> src/game/player.rs:16:26
[INFO] [stderr]    |
[INFO] [stderr] 5  | trait Session{
[INFO] [stderr]    |       ------- this trait cannot be made into an object...
[INFO] [stderr] 6  |     fn active() -> bool;
[INFO] [stderr]    |        ------ ...because associated function `active` has no `self` parameter
[INFO] [stderr] ...
[INFO] [stderr] 16 |     fn session(&self) -> Arc<dyn Session> {
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^ the trait `game::player::Session` cannot be made into an object
[INFO] [stderr]    |
[INFO] [stderr] help: consider turning `active` into a method by giving it a `&self` argument or constraining it so it does not apply to trait objects
[INFO] [stderr]    |
[INFO] [stderr] 6  |     fn active() -> bool where Self: Sized;
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:141:23
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 141 |     fn spam_spam_spam(&mut self);
[INFO] [stderr]     |                       ^^^^^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider further restricting this bound
[INFO] [stderr]     |
[INFO] [stderr] 139 |     where S: SendingState + game::game::ResponseState
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:128:21
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 128 |     fn bytes_so_far(&self) -> usize { /* ... */ }
[INFO] [stderr]     |                     ^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider restricting type parameter `S`
[INFO] [stderr]     |
[INFO] [stderr] 127 | impl<S: game::game::ResponseState> HttpResponse<S> {
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 18 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0038, E0277, E0412, E0422, E0425, E0432, E0583.
[INFO] [stderr] For more information about an error, try `rustc --explain E0038`.
[INFO] [stderr] error[E0277]: the trait bound `S: game::game::ResponseState` is not satisfied
[INFO] [stderr]    --> src/game/game.rs:141:23
[INFO] [stderr]     |
[INFO] [stderr] 86  | struct HttpResponse<S: ResponseState> {
[INFO] [stderr]     | ------------------------------------- required by `game::game::HttpResponse`
[INFO] [stderr] ...
[INFO] [stderr] 141 |     fn spam_spam_spam(&mut self);
[INFO] [stderr]     |                       ^^^^^^^^^ the trait `game::game::ResponseState` is not implemented for `S`
[INFO] [stderr]     |
[INFO] [stderr] help: consider further restricting this bound
[INFO] [stderr]     |
[INFO] [stderr] 139 |     where S: SendingState + game::game::ResponseState
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 18 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0038, E0277, E0412, E0422, E0425, E0432, E0583.
[INFO] [stderr] For more information about an error, try `rustc --explain E0038`.
[INFO] [stderr] error: could not compile `bssrv`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `bssrv`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "447760c01fac05b6d3435e84e24a96ed6d7a53613d09f73bad29288f4442bba3"`
[INFO] running `"docker" "rm" "-f" "447760c01fac05b6d3435e84e24a96ed6d7a53613d09f73bad29288f4442bba3"`
[INFO] [stdout] 447760c01fac05b6d3435e84e24a96ed6d7a53613d09f73bad29288f4442bba3
