[INFO] cloning repository https://github.com/kenesu-h/open-bomberman
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kenesu-h/open-bomberman" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkenesu-h%2Fopen-bomberman", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkenesu-h%2Fopen-bomberman'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ec5b2b4806ea41a6c2c25175fa758abd09142812
[INFO] testing kenesu-h/open-bomberman against beta-2021-08-01 for beta-1.55-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkenesu-h%2Fopen-bomberman" "/workspace/builds/worker-14/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-14/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/kenesu-h/open-bomberman on toolchain beta-2021-08-01
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2021-08-01" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/kenesu-h/open-bomberman
[INFO] finished tweaking git repo https://github.com/kenesu-h/open-bomberman
[INFO] tweaked toml for git repo https://github.com/kenesu-h/open-bomberman written to /workspace/builds/worker-14/source/Cargo.toml
[INFO] crate git repo https://github.com/kenesu-h/open-bomberman already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2021-08-01" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded matrixmultiply v0.3.1
[INFO] [stderr]   Downloaded ndarray v0.15.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2021-08-01" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2a5fc5cafedb79491ab1a341e48cf9baa85f48328fbeaa083125416f16ae7eb9
[INFO] running `Command { std: "docker" "start" "-a" "2a5fc5cafedb79491ab1a341e48cf9baa85f48328fbeaa083125416f16ae7eb9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2a5fc5cafedb79491ab1a341e48cf9baa85f48328fbeaa083125416f16ae7eb9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2a5fc5cafedb79491ab1a341e48cf9baa85f48328fbeaa083125416f16ae7eb9", kill_on_drop: false }`
[INFO] [stdout] 2a5fc5cafedb79491ab1a341e48cf9baa85f48328fbeaa083125416f16ae7eb9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/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=warn" "-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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2021-08-01" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a105c59a8ad397a3c17f725407bc81db7c2b4d9f92f84541adbc9cdc714e52ce
[INFO] running `Command { std: "docker" "start" "-a" "a105c59a8ad397a3c17f725407bc81db7c2b4d9f92f84541adbc9cdc714e52ce", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]    Compiling autocfg v1.0.1
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling version-compare v0.0.10
[INFO] [stderr]    Compiling libc v0.2.97
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling sdl2 v0.34.5
[INFO] [stderr]    Compiling rawpointer v0.2.1
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.1
[INFO] [stderr]    Compiling sdl2-sys v0.34.5
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling num-complex v0.4.0
[INFO] [stderr]    Compiling ndarray v0.15.3
[INFO] [stderr]    Compiling open-bomberman v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `stage::Tile`, `util`
[INFO] [stdout]  --> src/model/bomb.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     stage::Tile,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 5 |     util
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Array`, `Ix2`
[INFO] [stdout]  --> src/model/bomb.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ndarray::{Array, Ix2};
[INFO] [stdout]   |               ^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BombImpl`, `FlameImpl`, `StageImpl`
[INFO] [stdout]  --> src/model/world.rs:4:19
[INFO] [stdout]   |
[INFO] [stdout] 4 |     bomb::{Flame, FlameImpl, Blast, BlastImpl, Bomb, BombImpl},
[INFO] [stdout]   |                   ^^^^^^^^^                          ^^^^^^^^
[INFO] [stdout] 5 |     player::{Player},
[INFO] [stdout] 6 |     stage::{Tile, Stage, StageImpl}
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Array`, `Ix2`, `arr2`
[INFO] [stdout]  --> src/model/world.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use ndarray::{Array, arr2, Ix2};
[INFO] [stdout]   |               ^^^^^  ^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryFrom`
[INFO] [stdout]   --> src/model/world.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::convert::TryFrom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sdl2::pixels::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::event::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::keyboard::Keycode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Flame`
[INFO] [stdout]  --> src/model/world.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     bomb::{Flame, FlameImpl, Blast, BlastImpl, Bomb, BombImpl},
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `North`, `South`, `West` and 1 more not covered
[INFO] [stdout]   --> src/model/player.rs:45:15
[INFO] [stdout]    |
[INFO] [stdout] 45 |           match intermediate {
[INFO] [stdout]    |                 ^^^^^^^^^^^^ patterns `North`, `South`, `West` and 1 more not covered
[INFO] [stdout]    | 
[INFO] [stdout]   ::: src/common/direction.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout] 3  | / pub enum Direction {
[INFO] [stdout] 4  | |   North, South, West, East,
[INFO] [stdout] 5  | |   Northwest, Northeast, Southwest, Southeast
[INFO] [stdout] 6  | | }
[INFO] [stdout]    | |_- `Direction` defined here
[INFO] [stdout]    |
[INFO] [stdout]    = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
[INFO] [stdout]    = note: the matched value is of type `Direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `next_position`
[INFO] [stdout]    --> src/model/bomb.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let next_position: (i8, i8) = self.next_position();
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_position`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_spread_done`
[INFO] [stdout]    --> src/model/bomb.rs:250:9
[INFO] [stdout]     |
[INFO] [stdout] 250 |     let new_spread_done: bool = self.calc_spread_done();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_spread_done`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/model/world.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |     for i in 0..dt {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `flames` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> src/model/bomb.rs:191:7
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let flames: Vec<Box<dyn Flame>> = vec!();
[INFO] [stdout]     |         ------ help: consider changing this to be mutable: `mut flames`
[INFO] [stdout] ...
[INFO] [stdout] 191 |       flames.push(Box::new(FlameImpl::new(up_point, up_point, Direction::North, range)))
[INFO] [stdout]     |       ^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `flames` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> src/model/bomb.rs:194:7
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let flames: Vec<Box<dyn Flame>> = vec!();
[INFO] [stdout]     |         ------ help: consider changing this to be mutable: `mut flames`
[INFO] [stdout] ...
[INFO] [stdout] 194 |       flames.push(Box::new(FlameImpl::new(down_point, down_point, Direction::South, range)))
[INFO] [stdout]     |       ^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `flames` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> src/model/bomb.rs:197:7
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let flames: Vec<Box<dyn Flame>> = vec!();
[INFO] [stdout]     |         ------ help: consider changing this to be mutable: `mut flames`
[INFO] [stdout] ...
[INFO] [stdout] 197 |       flames.push(Box::new(FlameImpl::new(left_point, left_point, Direction::West, range)))
[INFO] [stdout]     |       ^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `flames` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> src/model/bomb.rs:200:7
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let flames: Vec<Box<dyn Flame>> = vec!();
[INFO] [stdout]     |         ------ help: consider changing this to be mutable: `mut flames`
[INFO] [stdout] ...
[INFO] [stdout] 200 |       flames.push(Box::new(FlameImpl::new(right_point, right_point, Direction::East, range)))
[INFO] [stdout]     |       ^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `flames` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> src/model/bomb.rs:215:7
[INFO] [stdout]     |
[INFO] [stdout] 213 |     let flames: Vec<Box<dyn Flame>> = vec!();
[INFO] [stdout]     |         ------ help: consider changing this to be mutable: `mut flames`
[INFO] [stdout] 214 |     for i in 0..self.flames.len() {
[INFO] [stdout] 215 |       flames.push(self.flames[i].tick(hit_wall[i]));
[INFO] [stdout]     |       ^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.flames` which is behind a shared reference
[INFO] [stdout]    --> src/model/bomb.rs:235:22
[INFO] [stdout]     |
[INFO] [stdout] 235 |         for flame in self.flames {
[INFO] [stdout]     |                      ^^^^^^^^^^^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      move occurs because `self.flames` has type `Vec<Box<dyn Flame>>`, which does not implement the `Copy` trait
[INFO] [stdout]     |                      help: consider iterating over a slice of the `Vec<_>`'s content: `&self.flames`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0384]: cannot assign twice to immutable variable `all_done`
[INFO] [stdout]    --> src/model/bomb.rs:236:11
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let all_done: bool = true;
[INFO] [stdout]     |             --------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             first assignment to `all_done`
[INFO] [stdout]     |             help: consider making this binding mutable: `mut all_done`
[INFO] [stdout] 235 |         for flame in self.flames {
[INFO] [stdout] 236 |           all_done = all_done && flame.get_spread_range() == &0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign twice to immutable variable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.flames` which is behind a shared reference
[INFO] [stdout]    --> src/model/bomb.rs:265:18
[INFO] [stdout]     |
[INFO] [stdout] 265 |     for flame in self.flames {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  move occurs because `self.flames` has type `Vec<Box<dyn Flame>>`, which does not implement the `Copy` trait
[INFO] [stdout]     |                  help: consider iterating over a slice of the `Vec<_>`'s content: `&self.flames`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `next_positions` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> src/model/bomb.rs:266:7
[INFO] [stdout]     |
[INFO] [stdout] 264 |     let next_positions: Vec<(i8, i8)> = vec!();
[INFO] [stdout]     |         -------------- help: consider changing this to be mutable: `mut next_positions`
[INFO] [stdout] 265 |     for flame in self.flames {
[INFO] [stdout] 266 |       next_positions.push(flame.next_position());
[INFO] [stdout]     |       ^^^^^^^^^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.blasts` which is behind a shared reference
[INFO] [stdout]   --> src/model/world.rs:60:18
[INFO] [stdout]    |
[INFO] [stdout] 60 |     for blast in self.blasts {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  move occurs because `self.blasts` has type `Vec<Box<dyn Blast>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |                  help: consider iterating over a slice of the `Vec<_>`'s content: `&self.blasts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `new_blasts` as mutable, as it is not declared as mutable
[INFO] [stdout]   --> src/model/world.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 59 |     let new_blasts: Vec<Box<dyn Blast>> = vec!();
[INFO] [stdout]    |         ---------- help: consider changing this to be mutable: `mut new_blasts`
[INFO] [stdout] 60 |     for blast in self.blasts {
[INFO] [stdout] 61 |       new_blasts.push(blast.tick(self.flames_hit_wall(blast)));
[INFO] [stdout]    |       ^^^^^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0505]: cannot move out of `blast` because it is borrowed
[INFO] [stdout]   --> src/model/world.rs:61:55
[INFO] [stdout]    |
[INFO] [stdout] 61 |       new_blasts.push(blast.tick(self.flames_hit_wall(blast)));
[INFO] [stdout]    |                       ----- ----                      ^^^^^ move out of `blast` occurs here
[INFO] [stdout]    |                       |     |
[INFO] [stdout]    |                       |     borrow later used by call
[INFO] [stdout]    |                       borrow of `*blast` occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `hit_wall` as mutable, as it is not declared as mutable
[INFO] [stdout]   --> src/model/world.rs:69:7
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let hit_wall: Vec<bool> = vec!();
[INFO] [stdout]    |         -------- help: consider changing this to be mutable: `mut hit_wall`
[INFO] [stdout] 68 |     for position in blast.next_positions() {
[INFO] [stdout] 69 |       hit_wall.push(self.is_wall_or_oob(&position));
[INFO] [stdout]    |       ^^^^^^^^ cannot borrow as mutable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.stage` which is behind a shared reference
[INFO] [stdout]   --> src/model/world.rs:77:16
[INFO] [stdout]    |
[INFO] [stdout] 77 |         stage: self.stage,
[INFO] [stdout]    |                ^^^^^^^^^^ move occurs because `self.stage` has type `Box<dyn Stage>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.players` which is behind a shared reference
[INFO] [stdout]   --> src/model/world.rs:78:18
[INFO] [stdout]    |
[INFO] [stdout] 78 |         players: self.players,
[INFO] [stdout]    |                  ^^^^^^^^^^^^ move occurs because `self.players` has type `Vec<Player>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.bombs` which is behind a shared reference
[INFO] [stdout]   --> src/model/world.rs:79:16
[INFO] [stdout]    |
[INFO] [stdout] 79 |         bombs: self.bombs,
[INFO] [stdout]    |                ^^^^^^^^^^ move occurs because `self.bombs` has type `Vec<Box<dyn Bomb>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.blasts` which is behind a shared reference
[INFO] [stdout]   --> src/model/world.rs:80:17
[INFO] [stdout]    |
[INFO] [stdout] 80 |         blasts: self.blasts
[INFO] [stdout]    |                 ^^^^^^^^^^^ move occurs because `self.blasts` has type `Vec<Box<dyn Blast>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.stage` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:105:16
[INFO] [stdout]     |
[INFO] [stdout] 105 |         stage: self.stage,
[INFO] [stdout]     |                ^^^^^^^^^^ move occurs because `self.stage` has type `Box<dyn Stage>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.players` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:106:18
[INFO] [stdout]     |
[INFO] [stdout] 106 |         players: self.players.into_iter().map(|p| {
[INFO] [stdout]     |                  ^^^^^^^^^^^^ move occurs because `self.players` has type `Vec<Player>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.bombs` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:113:16
[INFO] [stdout]     |
[INFO] [stdout] 113 |         bombs: self.bombs,
[INFO] [stdout]     |                ^^^^^^^^^^ move occurs because `self.bombs` has type `Vec<Box<dyn Bomb>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.blasts` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |         blasts: self.blasts
[INFO] [stdout]     |                 ^^^^^^^^^^^ move occurs because `self.blasts` has type `Vec<Box<dyn Blast>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.bombs` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:124:16
[INFO] [stdout]     |
[INFO] [stdout] 124 |         bombs: self.bombs.into_iter().map(|b| {
[INFO] [stdout]     |                ^^^^^^^^^^ move occurs because `self.bombs` has type `Vec<Box<dyn Bomb>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.blasts` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:127:17
[INFO] [stdout]     |
[INFO] [stdout] 127 |         blasts: self.blasts
[INFO] [stdout]     |                 ^^^^^^^^^^^ move occurs because `self.blasts` has type `Vec<Box<dyn Blast>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.bombs` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:137:16
[INFO] [stdout]     |
[INFO] [stdout] 137 |         bombs: self.bombs,
[INFO] [stdout]     |                ^^^^^^^^^^ move occurs because `self.bombs` has type `Vec<Box<dyn Bomb>>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.bombs` which is behind a shared reference
[INFO] [stdout]    --> src/model/world.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |     for bomb in self.bombs {
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 move occurs because `self.bombs` has type `Vec<Box<dyn Bomb>>`, which does not implement the `Copy` trait
[INFO] [stdout]     |                 help: consider iterating over a slice of the `Vec<_>`'s content: `&self.bombs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 26 previous errors; 13 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0384, E0505, E0507, E0596.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `open-bomberman` due to 27 previous errors; 13 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "a105c59a8ad397a3c17f725407bc81db7c2b4d9f92f84541adbc9cdc714e52ce", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a105c59a8ad397a3c17f725407bc81db7c2b4d9f92f84541adbc9cdc714e52ce", kill_on_drop: false }`
[INFO] [stdout] a105c59a8ad397a3c17f725407bc81db7c2b4d9f92f84541adbc9cdc714e52ce
