[INFO] cloning repository https://github.com/bencecile/absolute_defence
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bencecile/absolute_defence" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbencecile%2Fabsolute_defence", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbencecile%2Fabsolute_defence'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b544f94bb8e324aa8b2c73c874f10d37fffa2234
[INFO] checking bencecile/absolute_defence/b544f94bb8e324aa8b2c73c874f10d37fffa2234 against master#31a9463c6e2794a59ce57a8f37abc6966afc2a58 for pr-149045
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbencecile%2Fabsolute_defence" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/bencecile/absolute_defence
[INFO] finished tweaking git repo https://github.com/bencecile/absolute_defence
[INFO] tweaked toml for git repo https://github.com/bencecile/absolute_defence written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bencecile/absolute_defence on toolchain 31a9463c6e2794a59ce57a8f37abc6966afc2a58
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+31a9463c6e2794a59ce57a8f37abc6966afc2a58" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bencecile/absolute_defence 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" "+31a9463c6e2794a59ce57a8f37abc6966afc2a58" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 31 packages to latest compatible versions
[INFO] [stderr]       Adding cfg-if v1.0.4
[INFO] [stderr]       Adding fixedbitset v0.2.0 (available: v0.5.7)
[INFO] [stderr]       Adding futures-core v0.3.32
[INFO] [stderr]       Adding futures-task v0.3.32
[INFO] [stderr]       Adding futures-util v0.3.32
[INFO] [stderr]       Adding getrandom v0.1.16
[INFO] [stderr]       Adding getrandom v0.2.17 (available: v0.4.2)
[INFO] [stderr]     Updating js-sys v0.3.35 -> v0.3.99
[INFO] [stderr]       Adding libc v0.2.186
[INFO] [stderr]       Adding once_cell v1.21.4
[INFO] [stderr]       Adding pin-project-lite v0.2.17
[INFO] [stderr]       Adding ppv-lite86 v0.2.21
[INFO] [stderr]     Updating proc-macro2 v1.0.7 -> v1.0.106
[INFO] [stderr]     Updating quote v1.0.2 -> v1.0.45
[INFO] [stderr]       Adding rand v0.7.3 (available: v0.10.1)
[INFO] [stderr]       Adding rand_chacha v0.2.2
[INFO] [stderr]       Adding rand_core v0.5.1
[INFO] [stderr]       Adding rand_hc v0.2.0
[INFO] [stderr]       Adding rustversion v1.0.22
[INFO] [stderr]       Adding slab v0.4.12
[INFO] [stderr]     Updating syn v1.0.13 -> v2.0.117
[INFO] [stderr]       Adding unicode-ident v1.0.24
[INFO] [stderr]       Adding wasi v0.9.0+wasi-snapshot-preview1
[INFO] [stderr]       Adding wasi v0.11.1+wasi-snapshot-preview1
[INFO] [stderr]     Updating wasm-bindgen v0.2.58 -> v0.2.122
[INFO] [stderr]     Updating wasm-bindgen-macro v0.2.58 -> v0.2.122
[INFO] [stderr]     Updating wasm-bindgen-macro-support v0.2.58 -> v0.2.122
[INFO] [stderr]     Updating wasm-bindgen-shared v0.2.58 -> v0.2.122
[INFO] [stderr]     Updating web-sys v0.3.35 -> v0.3.99
[INFO] [stderr]       Adding zerocopy v0.8.50
[INFO] [stderr]       Adding zerocopy-derive v0.8.50
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded bumpalo v3.1.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+31a9463c6e2794a59ce57a8f37abc6966afc2a58" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fa3ebc0d5587c1794e1a4fa9f78a2e03ecde9d19bbaa50528f6561e618747ec8
[INFO] running `Command { std: "docker" "start" "-a" "fa3ebc0d5587c1794e1a4fa9f78a2e03ecde9d19bbaa50528f6561e618747ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fa3ebc0d5587c1794e1a4fa9f78a2e03ecde9d19bbaa50528f6561e618747ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fa3ebc0d5587c1794e1a4fa9f78a2e03ecde9d19bbaa50528f6561e618747ec8", kill_on_drop: false }`
[INFO] [stdout] fa3ebc0d5587c1794e1a4fa9f78a2e03ecde9d19bbaa50528f6561e618747ec8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+31a9463c6e2794a59ce57a8f37abc6966afc2a58" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d3914d83bdb202f45ba5dd56b806a0fd071650dddd2e0801111b80076b814af6
[INFO] running `Command { std: "docker" "start" "-a" "d3914d83bdb202f45ba5dd56b806a0fd071650dddd2e0801111b80076b814af6", kill_on_drop: false }`
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.122
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling bumpalo v3.1.2
[INFO] [stderr]     Checking unicode-ident v1.0.24
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking fixedbitset v0.2.0
[INFO] [stderr]    Compiling wasm-bindgen v0.2.122
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.122
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.122
[INFO] [stderr]     Checking js-sys v0.3.99
[INFO] [stderr]     Checking console_error_panic_hook v0.1.6
[INFO] [stderr]     Checking web-sys v0.3.99
[INFO] [stderr]     Checking absolute_defence v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0583]: file not found for module `commons`
[INFO] [stdout]  --> src/world.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | mod commons;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `commons`, create file "src/world/commons.rs" or "src/world/commons/mod.rs"
[INFO] [stdout]   = note: if there is a `mod commons` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `commons`
[INFO] [stdout]  --> src/world.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | mod commons;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `commons`, create file "src/world/commons.rs" or "src/world/commons/mod.rs"
[INFO] [stdout]   = note: if there is a `mod commons` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::common`
[INFO] [stdout]  --> src/world/enemy.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     common::{MovementStatus},
[INFO] [stdout]   |     ^^^^^^ could not find `common` in `super`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::common`
[INFO] [stdout]  --> src/world/player.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     common::{MovementStatus},
[INFO] [stdout]   |     ^^^^^^ could not find `common` in `super`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::math::probablility`
[INFO] [stdout]   --> src/world.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     probablility::{RollTable},
[INFO] [stdout]    |     ^^^^^^^^^^^^ could not find `probablility` in `math`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::common`
[INFO] [stdout]  --> src/world/enemy.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     common::{MovementStatus},
[INFO] [stdout]   |     ^^^^^^ could not find `common` in `super`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::common`
[INFO] [stdout]  --> src/world/player.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     common::{MovementStatus},
[INFO] [stdout]   |     ^^^^^^ could not find `common` in `super`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::math::probablility`
[INFO] [stdout]   --> src/world.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     probablility::{RollTable},
[INFO] [stdout]    |     ^^^^^^^^^^^^ could not find `probablility` in `math`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `CanvasRenderingContex2d` in this scope
[INFO] [stdout]   --> src/render.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(context: &CanvasRenderingContex2d, width: f64, height: f64) -> DrawingKit<'a> {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.99/src/features/gen_CanvasRenderingContext2d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | #[wasm_bindgen]
[INFO] [stdout]    | --------------- similarly named struct `CanvasRenderingContext2d` defined here
[INFO] [stdout]    |
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(context: &CanvasRenderingContext2d, width: f64, height: f64) -> DrawingKit<'a> {
[INFO] [stdout]    |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `World` in this scope
[INFO] [stdout]   --> src/render.rs:20:38
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn draw_world(&self, world: &World) {
[INFO] [stdout]    |                                      ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::World;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         context.save();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 26 |         self.context.save();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         context.set_fill_style(&("black".into()));
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 27 |         self.context.set_fill_style(&("black".into()));
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         context.stroke_rect(75.0, 140.0, 150.0, 110.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 30 |         self.context.stroke_rect(75.0, 140.0, 150.0, 110.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         context.fill_rect(130.0, 190.0, 40.0, 60.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 33 |         self.context.fill_rect(130.0, 190.0, 40.0, 60.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         context.begin_path();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 36 |         self.context.begin_path();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         context.move_to(50.0, 140.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 37 |         self.context.move_to(50.0, 140.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         context.line_to(150.0, 60.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 38 |         self.context.line_to(150.0, 60.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |         context.line_to(250.0, 140.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 39 |         self.context.line_to(250.0, 140.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         context.close_path();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 40 |         self.context.close_path();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         context.stroke();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 41 |         self.context.stroke();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         context.restore();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 43 |         self.context.restore();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:19:39
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn is_in_range(&self, target: Position) -> bool {
[INFO] [stdout]    |                                       ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Player` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn attack(&mut self, time_delta: f64, player: &mut Player) {
[INFO] [stdout]    |                                                            ^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::world::Player;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:37:31
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn position(&self) -> Position {
[INFO] [stdout]    |                               ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:43:44
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn turn_towards(&mut self, target: Position) {
[INFO] [stdout]    |                                            ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:53:34
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn spawn(self, position: Position, direction: Direction) -> Enemy {
[INFO] [stdout]    |                                  ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Direction` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:53:55
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn spawn(self, position: Position, direction: Direction) -> Enemy {
[INFO] [stdout]    |                                                       ^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Direction;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Enemy`
[INFO] [stdout]   --> src/lib.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |     world::{Enemy, EnemyType, World},
[INFO] [stdout]    |             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: missing generics for struct `RollTable`
[INFO] [stdout]   --> src/math/probability.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl <T: Clone> RollTable {
[INFO] [stdout]    |                 ^^^^^^^^^ expected 1 generic argument
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 1 generic parameter: `T`
[INFO] [stdout]   --> src/math/probability.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct RollTable<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^^^ -
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl <T: Clone> RollTable<T> {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]   --> src/math/probability.rs:19:63
[INFO] [stdout]    |
[INFO] [stdout] 19 |             panic!("The roll table doesn't sum to 100% {:?}", table);
[INFO] [stdout]    |                                                        ----   ^^^^^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |                                                        |
[INFO] [stdout]    |                                                        required by this formatting parameter
[INFO] [stdout]    |
[INFO] [stdout]    = note: required for `(f64, T)` to implement `Debug`
[INFO] [stdout]    = note: 2 redundant requirements hidden
[INFO] [stdout]    = note: required for `&[(f64, T)]` to implement `Debug`
[INFO] [stdout] help: consider further restricting type parameter `T` with trait `Debug`
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl <T: Clone + std::fmt::Debug> RollTable {
[INFO] [stdout]    |                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/math.rs:43:40
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn from_angle(radians: f64) -> Direction {
[INFO] [stdout]    |            ----------                  ^^^^^^^^^ expected `Direction`, found `()`
[INFO] [stdout]    |            |
[INFO] [stdout]    |            implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `CanvasRenderingContex2d` in this scope
[INFO] [stdout]   --> src/render.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(context: &CanvasRenderingContex2d, width: f64, height: f64) -> DrawingKit<'a> {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.99/src/features/gen_CanvasRenderingContext2d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | #[wasm_bindgen]
[INFO] [stdout]    | --------------- similarly named struct `CanvasRenderingContext2d` defined here
[INFO] [stdout]    |
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(context: &CanvasRenderingContext2d, width: f64, height: f64) -> DrawingKit<'a> {
[INFO] [stdout]    |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `World` in this scope
[INFO] [stdout]   --> src/render.rs:20:38
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn draw_world(&self, world: &World) {
[INFO] [stdout]    |                                      ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::World;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         context.save();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 26 |         self.context.save();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         context.set_fill_style(&("black".into()));
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 27 |         self.context.set_fill_style(&("black".into()));
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         context.stroke_rect(75.0, 140.0, 150.0, 110.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 30 |         self.context.stroke_rect(75.0, 140.0, 150.0, 110.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         context.fill_rect(130.0, 190.0, 40.0, 60.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 33 |         self.context.fill_rect(130.0, 190.0, 40.0, 60.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         context.begin_path();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 36 |         self.context.begin_path();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         context.move_to(50.0, 140.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 37 |         self.context.move_to(50.0, 140.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         context.line_to(150.0, 60.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 38 |         self.context.line_to(150.0, 60.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |         context.line_to(250.0, 140.0);
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 39 |         self.context.line_to(250.0, 140.0);
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         context.close_path();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 40 |         self.context.close_path();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         context.stroke();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 41 |         self.context.stroke();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `context` in this scope
[INFO] [stdout]   --> src/render.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         context.restore();
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use the available field
[INFO] [stdout]    |
[INFO] [stdout] 43 |         self.context.restore();
[INFO] [stdout]    |         +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:19:39
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn is_in_range(&self, target: Position) -> bool {
[INFO] [stdout]    |                                       ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Player` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn attack(&mut self, time_delta: f64, player: &mut Player) {
[INFO] [stdout]    |                                                            ^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::world::Player;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:37:31
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn position(&self) -> Position {
[INFO] [stdout]    |                               ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:43:44
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn turn_towards(&mut self, target: Position) {
[INFO] [stdout]    |                                            ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Position` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:53:34
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn spawn(self, position: Position, direction: Direction) -> Enemy {
[INFO] [stdout]    |                                  ^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Position;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Direction` in this scope
[INFO] [stdout]   --> src/world/enemy.rs:53:55
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn spawn(self, position: Position, direction: Direction) -> Enemy {
[INFO] [stdout]    |                                                       ^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::math::Direction;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Enemy`
[INFO] [stdout]   --> src/lib.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |     world::{Enemy, EnemyType, World},
[INFO] [stdout]    |             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: missing generics for struct `RollTable`
[INFO] [stdout]   --> src/math/probability.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl <T: Clone> RollTable {
[INFO] [stdout]    |                 ^^^^^^^^^ expected 1 generic argument
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 1 generic parameter: `T`
[INFO] [stdout]   --> src/math/probability.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct RollTable<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^^^ -
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl <T: Clone> RollTable<T> {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `Direction` in the current scope
[INFO] [stdout]   --> src/world/player.rs:32:28
[INFO] [stdout]    |
[INFO] [stdout] 32 |                 Direction::new(0.0, 1.0)
[INFO] [stdout]    |                            ^^^ associated function or constant not found in `Direction`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/math.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Direction(f64, f64);
[INFO] [stdout]    | -------------------- associated function or constant `new` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `Direction`, consider using `Direction::from_angle` which returns `Direction`
[INFO] [stdout]   --> src/math.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn from_angle(radians: f64) -> Direction {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `new`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `UniformSampler`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `&World`
[INFO] [stdout]   --> src/world.rs:47:69
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut attacking_enemies = FixedBitSet::with_capacity(self.world.enemies.len());
[INFO] [stdout]    |                                                                     ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `player`, `enemies`, `enemy_spawn_table`, `max_enemies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `&World`
[INFO] [stdout]   --> src/world.rs:49:36
[INFO] [stdout]    |
[INFO] [stdout] 49 |         let player_position = self.world.player.position();
[INFO] [stdout]    |                                    ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `player`, `enemies`, `enemy_spawn_table`, `max_enemies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `&World`
[INFO] [stdout]   --> src/world.rs:51:32
[INFO] [stdout]    |
[INFO] [stdout] 51 |         for (i, enemy) in self.world.enemies.iter_mut().enumerate() {
[INFO] [stdout]    |                                ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `player`, `enemies`, `enemy_spawn_table`, `max_enemies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_fill_style`
[INFO] [stdout]   --> src/lib.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |     context.set_fill_style(&("white".into()));
[INFO] [stdout]    |             ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_stroke_style`
[INFO] [stdout]   --> src/lib.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |     context.set_stroke_style(&("black".into()));
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/lib.rs:52:32
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let enemy_roll_table = RollTable::new(&[(1.0, EnemyType::Slime)]);
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^ -------------------------- argument #1 is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/math/probability.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn new(&mut self, table: &[(f64, T)]) -> RollTable<T> {
[INFO] [stdout]    |            ^^^ ---------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let enemy_roll_table = RollTable::new(/* value */, &[(1.0, EnemyType::Slime)]);
[INFO] [stdout]    |                                               ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `worl` on type `&GameState`
[INFO] [stdout]   --> src/lib.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 |         self.state.render(&self.worl, drawing_kit);
[INFO] [stdout]    |                                 ^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 75 |         self.state.render(&self.world, drawing_kit);
[INFO] [stdout]    |                                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:111:26
[INFO] [stdout]     |
[INFO] [stdout] 111 |                     self.world.player.face_towards(self.world.enemies[enemy_index].position());
[INFO] [stdout]     |                          ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:111:57
[INFO] [stdout]     |
[INFO] [stdout] 111 |                     self.world.player.face_towards(self.world.enemies[enemy_index].position());
[INFO] [stdout]     |                                                         ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:113:26
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     self.world.player.update_movement(time_delta);
[INFO] [stdout]     |                          ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:117:44
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 let player_position = self.world.player.position();
[INFO] [stdout]     |                                            ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:119:43
[INFO] [stdout]     |
[INFO] [stdout] 119 |                     let enemy = &mut self.world.enemies[i];
[INFO] [stdout]     |                                           ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:123:60
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         enemy.attack(time_delta, &mut self.world.player);
[INFO] [stdout]     |                                                            ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]   --> src/math/probability.rs:19:63
[INFO] [stdout]    |
[INFO] [stdout] 19 |             panic!("The roll table doesn't sum to 100% {:?}", table);
[INFO] [stdout]    |                                                        ----   ^^^^^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |                                                        |
[INFO] [stdout]    |                                                        required by this formatting parameter
[INFO] [stdout]    |
[INFO] [stdout]    = note: required for `(f64, T)` to implement `Debug`
[INFO] [stdout]    = note: 2 redundant requirements hidden
[INFO] [stdout]    = note: required for `&[(f64, T)]` to implement `Debug`
[INFO] [stdout] help: consider further restricting type parameter `T` with trait `Debug`
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl <T: Clone + std::fmt::Debug> RollTable {
[INFO] [stdout]    |                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/math.rs:43:40
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn from_angle(radians: f64) -> Direction {
[INFO] [stdout]    |            ----------                  ^^^^^^^^^ expected `Direction`, found `()`
[INFO] [stdout]    |            |
[INFO] [stdout]    |            implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0107, E0277, E0308, E0425, E0432, E0583, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `Direction` in the current scope
[INFO] [stdout]   --> src/world/player.rs:32:28
[INFO] [stdout]    |
[INFO] [stdout] 32 |                 Direction::new(0.0, 1.0)
[INFO] [stdout]    |                            ^^^ associated function or constant not found in `Direction`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/math.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Direction(f64, f64);
[INFO] [stdout]    | -------------------- associated function or constant `new` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `Direction`, consider using `Direction::from_angle` which returns `Direction`
[INFO] [stdout]   --> src/math.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn from_angle(radians: f64) -> Direction {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `new`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `UniformSampler`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `&World`
[INFO] [stdout]   --> src/world.rs:47:69
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut attacking_enemies = FixedBitSet::with_capacity(self.world.enemies.len());
[INFO] [stdout]    |                                                                     ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `player`, `enemies`, `enemy_spawn_table`, `max_enemies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `&World`
[INFO] [stdout]   --> src/world.rs:49:36
[INFO] [stdout]    |
[INFO] [stdout] 49 |         let player_position = self.world.player.position();
[INFO] [stdout]    |                                    ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `player`, `enemies`, `enemy_spawn_table`, `max_enemies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `&World`
[INFO] [stdout]   --> src/world.rs:51:32
[INFO] [stdout]    |
[INFO] [stdout] 51 |         for (i, enemy) in self.world.enemies.iter_mut().enumerate() {
[INFO] [stdout]    |                                ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `player`, `enemies`, `enemy_spawn_table`, `max_enemies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `absolute_defence` (lib) due to 38 previous errors; 3 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_fill_style`
[INFO] [stdout]   --> src/lib.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |     context.set_fill_style(&("white".into()));
[INFO] [stdout]    |             ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_stroke_style`
[INFO] [stdout]   --> src/lib.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |     context.set_stroke_style(&("black".into()));
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/lib.rs:52:32
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let enemy_roll_table = RollTable::new(&[(1.0, EnemyType::Slime)]);
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^ -------------------------- argument #1 is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/math/probability.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn new(&mut self, table: &[(f64, T)]) -> RollTable<T> {
[INFO] [stdout]    |            ^^^ ---------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let enemy_roll_table = RollTable::new(/* value */, &[(1.0, EnemyType::Slime)]);
[INFO] [stdout]    |                                               ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `worl` on type `&GameState`
[INFO] [stdout]   --> src/lib.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 |         self.state.render(&self.worl, drawing_kit);
[INFO] [stdout]    |                                 ^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 75 |         self.state.render(&self.world, drawing_kit);
[INFO] [stdout]    |                                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:111:26
[INFO] [stdout]     |
[INFO] [stdout] 111 |                     self.world.player.face_towards(self.world.enemies[enemy_index].position());
[INFO] [stdout]     |                          ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:111:57
[INFO] [stdout]     |
[INFO] [stdout] 111 |                     self.world.player.face_towards(self.world.enemies[enemy_index].position());
[INFO] [stdout]     |                                                         ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:113:26
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     self.world.player.update_movement(time_delta);
[INFO] [stdout]     |                          ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:117:44
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 let player_position = self.world.player.position();
[INFO] [stdout]     |                                            ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:119:43
[INFO] [stdout]     |
[INFO] [stdout] 119 |                     let enemy = &mut self.world.enemies[i];
[INFO] [stdout]     |                                           ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `world` on type `StateType`
[INFO] [stdout]    --> src/lib.rs:123:60
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         enemy.attack(time_delta, &mut self.world.player);
[INFO] [stdout]     |                                                            ^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0107, E0277, E0308, E0425, E0432, E0583, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `absolute_defence` (lib test) due to 38 previous errors; 3 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "d3914d83bdb202f45ba5dd56b806a0fd071650dddd2e0801111b80076b814af6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d3914d83bdb202f45ba5dd56b806a0fd071650dddd2e0801111b80076b814af6", kill_on_drop: false }`
[INFO] [stdout] d3914d83bdb202f45ba5dd56b806a0fd071650dddd2e0801111b80076b814af6
