[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-2022-04-10 for beta-1.61-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkenesu-h%2Fopen-bomberman" "/workspace/builds/worker-6/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/kenesu-h/open-bomberman on toolchain beta-2022-04-10 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "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-6/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-2022-04-10" "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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3cca0e095c24b18d0fcb6ae11c1c1b0fca5f68b0efcb428231d58ff43c916b33 [INFO] running `Command { std: "docker" "start" "-a" "3cca0e095c24b18d0fcb6ae11c1c1b0fca5f68b0efcb428231d58ff43c916b33", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3cca0e095c24b18d0fcb6ae11c1c1b0fca5f68b0efcb428231d58ff43c916b33", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3cca0e095c24b18d0fcb6ae11c1c1b0fca5f68b0efcb428231d58ff43c916b33", kill_on_drop: false }` [INFO] [stdout] 3cca0e095c24b18d0fcb6ae11c1c1b0fca5f68b0efcb428231d58ff43c916b33 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] eb2ef628e2df83ad1e04f380a7e70541dd099cb94fa8a37d30aaf2161fa628bc [INFO] running `Command { std: "docker" "start" "-a" "eb2ef628e2df83ad1e04f380a7e70541dd099cb94fa8a37d30aaf2161fa628bc", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling version-compare v0.0.10 [INFO] [stderr] Compiling libc v0.2.97 [INFO] [stderr] Compiling sdl2 v0.34.5 [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] note: `Direction` defined here [INFO] [stdout] --> src/common/direction.rs:4:3 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum Direction { [INFO] [stdout] | --------- [INFO] [stdout] 4 | North, South, West, East, [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ ^^^^ not covered [INFO] [stdout] | | | | [INFO] [stdout] | | | not covered [INFO] [stdout] | | not covered [INFO] [stdout] | not covered [INFO] [stdout] = note: the matched value is of type `Direction` [INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown, or multiple match arms [INFO] [stdout] | [INFO] [stdout] 57 ~ } [INFO] [stdout] 58 + _ => todo!() [INFO] [stdout] | [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> = 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> = 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> = 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> = 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> = 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] | `self.flames` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `self.flames` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: this function takes ownership of the receiver `self`, which moves `self.flames` [INFO] [stdout] help: consider iterating over a slice of the `Vec>`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 235 | for flame in &self.flames { [INFO] [stdout] | + [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] | `self.flames` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `self.flames` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: this function takes ownership of the receiver `self`, which moves `self.flames` [INFO] [stdout] help: consider iterating over a slice of the `Vec>`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 265 | for flame in &self.flames { [INFO] [stdout] | + [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] | `self.blasts` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `self.blasts` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: this function takes ownership of the receiver `self`, which moves `self.blasts` [INFO] [stdout] help: consider iterating over a slice of the `Vec>`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 60 | for blast in &self.blasts { [INFO] [stdout] | + [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> = 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] | --------------------------------^^^^^-- [INFO] [stdout] | | | [INFO] [stdout] | | move out of `blast` occurs here [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 = 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`, 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`, 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>`, 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>`, 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`, 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] | ^^^^^^^^^^^^ ----------- `self.players` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `self.players` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: this function takes ownership of the receiver `self`, which moves `self.players` [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>`, 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>`, 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] | ^^^^^^^^^^ ----------- `self.bombs` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `self.bombs` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: this function takes ownership of the receiver `self`, which moves `self.bombs` [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>`, 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>`, 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] | `self.bombs` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `self.bombs` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: this function takes ownership of the receiver `self`, which moves `self.bombs` [INFO] [stdout] help: consider iterating over a slice of the `Vec>`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 147 | for bomb in &self.bombs { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 26 previous errors; 13 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `open-bomberman` due to 27 previous errors; 13 warnings emitted [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] running `Command { std: "docker" "inspect" "eb2ef628e2df83ad1e04f380a7e70541dd099cb94fa8a37d30aaf2161fa628bc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eb2ef628e2df83ad1e04f380a7e70541dd099cb94fa8a37d30aaf2161fa628bc", kill_on_drop: false }` [INFO] [stdout] eb2ef628e2df83ad1e04f380a7e70541dd099cb94fa8a37d30aaf2161fa628bc