[INFO] updating cached repository https://github.com/zack37/rust-cave-story
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] cd1283cce3e0082b28589aacfab9db859f1c9832
[INFO] checking zack37/rust-cave-story against master#209b2be09fcaff937480d1fbbe8b31646e361c7a for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzack37%2Frust-cave-story" "/workspace/builds/worker-3/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/zack37/rust-cave-story on toolchain 209b2be09fcaff937480d1fbbe8b31646e361c7a
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/zack37/rust-cave-story
[INFO] finished tweaking git repo https://github.com/zack37/rust-cave-story
[INFO] tweaked toml for git repo https://github.com/zack37/rust-cave-story written to /workspace/builds/worker-3/source/Cargo.toml
[INFO] crate git repo https://github.com/zack37/rust-cave-story already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] [stderr] warning: unused manifest key: attributes
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stdout] 6f85baeadc0c6d4c27d7a73a30743774386d1cb7b6374781bf10a35f51135f17
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `"docker" "start" "-a" "6f85baeadc0c6d4c27d7a73a30743774386d1cb7b6374781bf10a35f51135f17"`
[INFO] [stderr] warning: unused manifest key: attributes
[INFO] [stderr]     Checking num v0.1.37
[INFO] [stderr]     Checking sdl2 v0.30.0
[INFO] [stderr]     Checking cave-story v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/tile.rs:12:34
[INFO] [stderr]    |
[INFO] [stderr] 12 | type TileSprite = Rc<RefCell<Box<Sprite>>>;
[INFO] [stderr]    |                                  ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:19:26
[INFO] [stderr]    |
[INFO] [stderr] 19 |     backdrop: Option<Box<Backdrop>>,
[INFO] [stderr]    |                          ^^^^^^^^ help: use `dyn`: `dyn Backdrop`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:51:47
[INFO] [stderr]    |
[INFO] [stderr] 51 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:58:50
[INFO] [stderr]    |
[INFO] [stderr] 58 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:66:53
[INFO] [stderr]    |
[INFO] [stderr] 66 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:74:53
[INFO] [stderr]    |
[INFO] [stderr] 74 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/player/mod.rs:51:39
[INFO] [stderr]    |
[INFO] [stderr] 51 |     sprites: HashMap<SpriteState, Box<Sprite>>,
[INFO] [stderr]    |                                       ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/tile.rs:12:34
[INFO] [stderr]    |
[INFO] [stderr] 12 | type TileSprite = Rc<RefCell<Box<Sprite>>>;
[INFO] [stderr]    |                                  ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:19:26
[INFO] [stderr]    |
[INFO] [stderr] 19 |     backdrop: Option<Box<Backdrop>>,
[INFO] [stderr]    |                          ^^^^^^^^ help: use `dyn`: `dyn Backdrop`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:51:47
[INFO] [stderr]    |
[INFO] [stderr] 51 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:58:50
[INFO] [stderr]    |
[INFO] [stderr] 58 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:66:53
[INFO] [stderr]    |
[INFO] [stderr] 66 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/map/mod.rs:74:53
[INFO] [stderr]    |
[INFO] [stderr] 74 | ...                   Box<Sprite>));
[INFO] [stderr]    |                           ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/player/mod.rs:51:39
[INFO] [stderr]    |
[INFO] [stderr] 51 |     sprites: HashMap<SpriteState, Box<Sprite>>,
[INFO] [stderr]    |                                       ^^^^^^ help: use `dyn`: `dyn Sprite`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:24:22
[INFO] [stderr]    |
[INFO] [stderr] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                      ^^^^^^^^^^^^ expected integer, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:24:44
[INFO] [stderr]    |
[INFO] [stderr] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
[INFO] [stderr]    |
[INFO] [stderr] help: you can convert an `u32` to `usize` and panic if the converted value wouldn't fit
[INFO] [stderr]    |
[INFO] [stderr] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE.try_into().unwrap()) {
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:24:22
[INFO] [stderr]    |
[INFO] [stderr] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                      ^^^^^^^^^^^^ expected integer, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:24:44
[INFO] [stderr]    |
[INFO] [stderr] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
[INFO] [stderr]    |
[INFO] [stderr] help: you can convert an `u32` to `usize` and panic if the converted value wouldn't fit
[INFO] [stderr]    |
[INFO] [stderr] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE.try_into().unwrap()) {
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:25:26
[INFO] [stderr]    |
[INFO] [stderr] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                          ^^^^^^^^^^^^^ expected integer, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:25:49
[INFO] [stderr]    |
[INFO] [stderr] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
[INFO] [stderr]    |
[INFO] [stderr] help: you can convert an `u32` to `usize` and panic if the converted value wouldn't fit
[INFO] [stderr]    |
[INFO] [stderr] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE.try_into().unwrap()) {
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:25:26
[INFO] [stderr]    |
[INFO] [stderr] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                          ^^^^^^^^^^^^^ expected integer, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/backdrop.rs:25:49
[INFO] [stderr]    |
[INFO] [stderr] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE) {
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
[INFO] [stderr]    |
[INFO] [stderr] help: you can convert an `u32` to `usize` and panic if the converted value wouldn't fit
[INFO] [stderr]    |
[INFO] [stderr] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE.try_into().unwrap()) {
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `{integer}: units::drawing::AsGame` is not satisfied
[INFO] [stderr]   --> src/game.rs:37:54
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let mut player = Player::new(graphics, width / 2, height / 2);
[INFO] [stderr]    |                                                      ^ the trait `units::drawing::AsGame` is not implemented for `{integer}`
[INFO] [stderr]    |
[INFO] [stderr]    = help: the following implementations were found:
[INFO] [stderr]              <units::drawing::Game as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::HalfTile as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::Tile as units::drawing::AsGame>
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<{integer}>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `{integer}: units::drawing::AsGame` is not satisfied
[INFO] [stderr]   --> src/game.rs:37:66
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let mut player = Player::new(graphics, width / 2, height / 2);
[INFO] [stderr]    |                                                                  ^ the trait `units::drawing::AsGame` is not implemented for `{integer}`
[INFO] [stderr]    |
[INFO] [stderr]    = help: the following implementations were found:
[INFO] [stderr]              <units::drawing::Game as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::HalfTile as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::Tile as units::drawing::AsGame>
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<{integer}>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `{integer}: units::drawing::AsGame` is not satisfied
[INFO] [stderr]   --> src/game.rs:37:54
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let mut player = Player::new(graphics, width / 2, height / 2);
[INFO] [stderr]    |                                                      ^ the trait `units::drawing::AsGame` is not implemented for `{integer}`
[INFO] [stderr]    |
[INFO] [stderr]    = help: the following implementations were found:
[INFO] [stderr]              <units::drawing::Game as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::HalfTile as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::Tile as units::drawing::AsGame>
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<{integer}>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `{integer}: units::drawing::AsGame` is not satisfied
[INFO] [stderr]   --> src/game.rs:37:66
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let mut player = Player::new(graphics, width / 2, height / 2);
[INFO] [stderr]    |                                                                  ^ the trait `units::drawing::AsGame` is not implemented for `{integer}`
[INFO] [stderr]    |
[INFO] [stderr]    = help: the following implementations were found:
[INFO] [stderr]              <units::drawing::Game as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::HalfTile as units::drawing::AsGame>
[INFO] [stderr]              <units::drawing::Tile as units::drawing::AsGame>
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<{integer}>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/graphics.rs:22:49
[INFO] [stderr]    |
[INFO] [stderr] 22 |                     .window("Cave Story: Rust", SCREEN_WIDTH, SCREEN_HEIGHT)
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^ expected `u32`, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/graphics.rs:22:49
[INFO] [stderr]    |
[INFO] [stderr] 22 |                     .window("Cave Story: Rust", SCREEN_WIDTH, SCREEN_HEIGHT)
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^ expected `u32`, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/graphics.rs:22:63
[INFO] [stderr]    |
[INFO] [stderr] 22 |                     .window("Cave Story: Rust", SCREEN_WIDTH, SCREEN_HEIGHT)
[INFO] [stderr]    |                                                               ^^^^^^^^^^^^^ expected `u32`, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/graphics.rs:22:63
[INFO] [stderr]    |
[INFO] [stderr] 22 |                     .window("Cave Story: Rust", SCREEN_WIDTH, SCREEN_HEIGHT)
[INFO] [stderr]    |                                                               ^^^^^^^^^^^^^ expected `u32`, found struct `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `u32: units::drawing::AsTile` is not satisfied
[INFO] [stderr]   --> src/map/mod.rs:36:39
[INFO] [stderr]    |
[INFO] [stderr] 36 |         let num_rows = (SCREEN_HEIGHT / TILE_SIZE) as usize;
[INFO] [stderr]    |                                       ^ the trait `units::drawing::AsTile` is not implemented for `u32`
[INFO] [stderr]    |
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<u32>` for `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `u32: units::drawing::AsTile` is not satisfied
[INFO] [stderr]   --> src/map/mod.rs:37:38
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let num_cols = (SCREEN_WIDTH / TILE_SIZE) as usize;
[INFO] [stderr]    |                                      ^ the trait `units::drawing::AsTile` is not implemented for `u32`
[INFO] [stderr]    |
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<u32>` for `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0605]: non-primitive cast: `units::drawing::Tile` as `usize`
[INFO] [stderr]   --> src/map/mod.rs:36:24
[INFO] [stderr]    |
[INFO] [stderr] 36 |         let num_rows = (SCREEN_HEIGHT / TILE_SIZE) as usize;
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
[INFO] [stderr] 
[INFO] [stderr] error[E0605]: non-primitive cast: `units::drawing::Tile` as `usize`
[INFO] [stderr]   --> src/map/mod.rs:37:24
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let num_cols = (SCREEN_WIDTH / TILE_SIZE) as usize;
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `u32: units::drawing::AsTile` is not satisfied
[INFO] [stderr]   --> src/map/mod.rs:36:39
[INFO] [stderr]    |
[INFO] [stderr] 36 |         let num_rows = (SCREEN_HEIGHT / TILE_SIZE) as usize;
[INFO] [stderr]    |                                       ^ the trait `units::drawing::AsTile` is not implemented for `u32`
[INFO] [stderr]    |
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<u32>` for `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `u32: units::drawing::AsTile` is not satisfied
[INFO] [stderr]   --> src/map/mod.rs:37:38
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let num_cols = (SCREEN_WIDTH / TILE_SIZE) as usize;
[INFO] [stderr]    |                                      ^ the trait `units::drawing::AsTile` is not implemented for `u32`
[INFO] [stderr]    |
[INFO] [stderr]    = note: required because of the requirements on the impl of `std::ops::Div<u32>` for `units::drawing::Tile`
[INFO] [stderr] 
[INFO] [stderr] error[E0605]: non-primitive cast: `units::drawing::Tile` as `usize`
[INFO] [stderr]   --> src/map/mod.rs:36:24
[INFO] [stderr]    |
[INFO] [stderr] 36 |         let num_rows = (SCREEN_HEIGHT / TILE_SIZE) as usize;
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
[INFO] [stderr] 
[INFO] [stderr] error[E0605]: non-primitive cast: `units::drawing::Tile` as `usize`
[INFO] [stderr]   --> src/map/mod.rs:37:24
[INFO] [stderr]    |
[INFO] [stderr] 37 |         let num_cols = (SCREEN_WIDTH / TILE_SIZE) as usize;
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:132:63
[INFO] [stderr]     |
[INFO] [stderr] 132 |         self.sprites[&self.get_sprite_state()].draw(graphics, self.x, self.y);
[INFO] [stderr]     |                                                               ^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:132:63
[INFO] [stderr]     |
[INFO] [stderr] 132 |         self.sprites[&self.get_sprite_state()].draw(graphics, self.x, self.y);
[INFO] [stderr]     |                                                               ^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:132:71
[INFO] [stderr]     |
[INFO] [stderr] 132 |         self.sprites[&self.get_sprite_state()].draw(graphics, self.x, self.y);
[INFO] [stderr]     |                                                                       ^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:132:71
[INFO] [stderr]     |
[INFO] [stderr] 132 |         self.sprites[&self.get_sprite_state()].draw(graphics, self.x, self.y);
[INFO] [stderr]     |                                                                       ^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:147:55
[INFO] [stderr]     |
[INFO] [stderr] 147 |         let acceleration_x = if self.acceleration_x < 0 {
[INFO] [stderr]     |                                                       ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:147:55
[INFO] [stderr]     |
[INFO] [stderr] 147 |         let acceleration_x = if self.acceleration_x < 0 {
[INFO] [stderr]     |                                                       ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:153:41
[INFO] [stderr]     |
[INFO] [stderr] 153 |         } else if self.acceleration_x > 0 {
[INFO] [stderr]     |                                         ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:153:41
[INFO] [stderr]     |
[INFO] [stderr] 153 |         } else if self.acceleration_x > 0 {
[INFO] [stderr]     |                                         ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: `if` and `else` have incompatible types
[INFO] [stderr]    --> src/player/mod.rs:160:13
[INFO] [stderr]     |
[INFO] [stderr] 153 |            } else if self.acceleration_x > 0 {
[INFO] [stderr]     |   ________________-
[INFO] [stderr] 154 |  |             if self.on_ground {
[INFO] [stderr]     |  |_____________-
[INFO] [stderr] 155 | ||                 WALKING_ACCELERATION
[INFO] [stderr] 156 | ||             } else {
[INFO] [stderr] 157 | ||                 AIR_ACCELERATION
[INFO] [stderr] 158 | ||             }
[INFO] [stderr]     | ||_____________- expected because of this
[INFO] [stderr] 159 |  |         } else {
[INFO] [stderr] 160 |  |             0.0
[INFO] [stderr]     |  |             ^^^ expected struct `units::physics::Acceleration`, found floating-point number
[INFO] [stderr] 161 |  |         };
[INFO] [stderr]     |  |_________- `if` and `else` have incompatible types
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:162:9
[INFO] [stderr]     |
[INFO] [stderr] 162 |         self.velocity_x += acceleration_x * elapsed_time_ms;
[INFO] [stderr]     |         ---------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         cannot use `+=` on type `units::physics::Velocity`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: `if` and `else` have incompatible types
[INFO] [stderr]    --> src/player/mod.rs:160:13
[INFO] [stderr]     |
[INFO] [stderr] 153 |            } else if self.acceleration_x > 0 {
[INFO] [stderr]     |   ________________-
[INFO] [stderr] 154 |  |             if self.on_ground {
[INFO] [stderr]     |  |_____________-
[INFO] [stderr] 155 | ||                 WALKING_ACCELERATION
[INFO] [stderr] 156 | ||             } else {
[INFO] [stderr] 157 | ||                 AIR_ACCELERATION
[INFO] [stderr] 158 | ||             }
[INFO] [stderr]     | ||_____________- expected because of this
[INFO] [stderr] 159 |  |         } else {
[INFO] [stderr] 160 |  |             0.0
[INFO] [stderr]     |  |             ^^^ expected struct `units::physics::Acceleration`, found floating-point number
[INFO] [stderr] 161 |  |         };
[INFO] [stderr]     |  |_________- `if` and `else` have incompatible types
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:162:9
[INFO] [stderr]     |
[INFO] [stderr] 162 |         self.velocity_x += acceleration_x * elapsed_time_ms;
[INFO] [stderr]     |         ---------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         cannot use `+=` on type `units::physics::Velocity`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:164:52
[INFO] [stderr]     |
[INFO] [stderr] 164 |         self.velocity_x = if self.acceleration_x < 0 {
[INFO] [stderr]     |                                                    ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `max` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:165:29
[INFO] [stderr]     |
[INFO] [stderr] 165 |             self.velocity_x.max(-MAX_SPEED_X)
[INFO] [stderr]     |                             ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `max` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `max` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:164:52
[INFO] [stderr]     |
[INFO] [stderr] 164 |         self.velocity_x = if self.acceleration_x < 0 {
[INFO] [stderr]     |                                                    ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `max` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:165:29
[INFO] [stderr]     |
[INFO] [stderr] 165 |             self.velocity_x.max(-MAX_SPEED_X)
[INFO] [stderr]     |                             ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `max` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `max` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:166:41
[INFO] [stderr]     |
[INFO] [stderr] 166 |         } else if self.acceleration_x > 0 {
[INFO] [stderr]     |                                         ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `min` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:167:29
[INFO] [stderr]     |
[INFO] [stderr] 167 |             self.velocity_x.min(MAX_SPEED_X)
[INFO] [stderr]     |                             ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `min` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `min` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0369]: binary operation `>` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:169:32
[INFO] [stderr]     |
[INFO] [stderr] 169 |             if self.velocity_x > 0.0 {
[INFO] [stderr]     |                --------------- ^ --- {float}
[INFO] [stderr]     |                |
[INFO] [stderr]     |                units::physics::Velocity
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::cmp::PartialOrd` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:166:41
[INFO] [stderr]     |
[INFO] [stderr] 166 |         } else if self.acceleration_x > 0 {
[INFO] [stderr]     |                                         ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `min` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:167:29
[INFO] [stderr]     |
[INFO] [stderr] 167 |             self.velocity_x.min(MAX_SPEED_X)
[INFO] [stderr]     |                             ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `min` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `min` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0369]: binary operation `>` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:169:32
[INFO] [stderr]     |
[INFO] [stderr] 169 |             if self.velocity_x > 0.0 {
[INFO] [stderr]     |                --------------- ^ --- {float}
[INFO] [stderr]     |                |
[INFO] [stderr]     |                units::physics::Velocity
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::cmp::PartialOrd` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:170:47
[INFO] [stderr]     |
[INFO] [stderr] 170 |                 (self.velocity_x - FRICTION * elapsed_time_ms).max(0.0)
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `max` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:170:64
[INFO] [stderr]     |
[INFO] [stderr] 170 |                 (self.velocity_x - FRICTION * elapsed_time_ms).max(0.0)
[INFO] [stderr]     |                                                                ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `max` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `max` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:172:47
[INFO] [stderr]     |
[INFO] [stderr] 172 |                 (self.velocity_x + FRICTION * elapsed_time_ms).min(0.0)
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:170:47
[INFO] [stderr]     |
[INFO] [stderr] 170 |                 (self.velocity_x - FRICTION * elapsed_time_ms).max(0.0)
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `max` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:170:64
[INFO] [stderr]     |
[INFO] [stderr] 170 |                 (self.velocity_x - FRICTION * elapsed_time_ms).max(0.0)
[INFO] [stderr]     |                                                                ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `max` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `max` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `min` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:172:64
[INFO] [stderr]     |
[INFO] [stderr] 172 |                 (self.velocity_x + FRICTION * elapsed_time_ms).min(0.0)
[INFO] [stderr]     |                                                                ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `min` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `min` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:179:40
[INFO] [stderr]     |
[INFO] [stderr] 179 |         let delta = (self.velocity_x * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:172:47
[INFO] [stderr]     |
[INFO] [stderr] 172 |                 (self.velocity_x + FRICTION * elapsed_time_ms).min(0.0)
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `min` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:172:64
[INFO] [stderr]     |
[INFO] [stderr] 172 |                 (self.velocity_x + FRICTION * elapsed_time_ms).min(0.0)
[INFO] [stderr]     |                                                                ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `min` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `min` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `round` found for struct `units::drawing::Game` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:179:57
[INFO] [stderr]     |
[INFO] [stderr] 179 |         let delta = (self.velocity_x * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                                         ^^^^^ method not found in `units::drawing::Game`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/drawing.rs:17:1
[INFO] [stderr]     |
[INFO] [stderr] 17  | pub struct Game(pub f64);
[INFO] [stderr]     | ------------------------- method `round` not found for this
[INFO] [stderr]     |
[INFO] [stderr]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stderr]     = note: the following trait defines an item `round`, perhaps you need to implement it:
[INFO] [stderr]             candidate #1: `num_traits::float::Float`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: can't compare `i32` with `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:182:18
[INFO] [stderr]     |
[INFO] [stderr] 182 |         if delta > units::Game(0.0) {
[INFO] [stderr]     |                  ^ no implementation for `i32 < units::drawing::Game` and `i32 > units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::cmp::PartialOrd<units::drawing::Game>` is not implemented for `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:179:40
[INFO] [stderr]     |
[INFO] [stderr] 179 |         let delta = (self.velocity_x * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `round` found for struct `units::drawing::Game` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:179:57
[INFO] [stderr]     |
[INFO] [stderr] 179 |         let delta = (self.velocity_x * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                                         ^^^^^ method not found in `units::drawing::Game`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/drawing.rs:17:1
[INFO] [stderr]     |
[INFO] [stderr] 17  | pub struct Game(pub f64);
[INFO] [stderr]     | ------------------------- method `round` not found for this
[INFO] [stderr]     |
[INFO] [stderr]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stderr]     = note: the following trait defines an item `round`, perhaps you need to implement it:
[INFO] [stderr]             candidate #1: `num_traits::float::Float`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: can't compare `i32` with `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:182:18
[INFO] [stderr]     |
[INFO] [stderr] 182 |         if delta > units::Game(0.0) {
[INFO] [stderr]     |                  ^ no implementation for `i32 < units::drawing::Game` and `i32 > units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::cmp::PartialOrd<units::drawing::Game>` is not implemented for `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:187:26
[INFO] [stderr]     |
[INFO] [stderr] 187 |                 self.x = info.col * TILE_SIZE as i32 - self.collision_x.right();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:187:26
[INFO] [stderr]     |
[INFO] [stderr] 187 |                 self.x = info.col * TILE_SIZE as i32 - self.collision_x.right();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:188:35
[INFO] [stderr]     |
[INFO] [stderr] 188 |                 self.velocity_x = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:190:17
[INFO] [stderr]     |
[INFO] [stderr] 190 |                 self.x += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:188:35
[INFO] [stderr]     |
[INFO] [stderr] 188 |                 self.velocity_x = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:190:17
[INFO] [stderr]     |
[INFO] [stderr] 190 |                 self.x += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:196:26
[INFO] [stderr]     |
[INFO] [stderr] 196 |                 self.x = info.col * TILE_SIZE as i32 + self.collision_x.right() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:196:26
[INFO] [stderr]     |
[INFO] [stderr] 196 |                 self.x = info.col * TILE_SIZE as i32 + self.collision_x.right() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:203:26
[INFO] [stderr]     |
[INFO] [stderr] 203 |                 self.x = info.col * TILE_SIZE as i32 + self.collision_x.right() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:203:26
[INFO] [stderr]     |
[INFO] [stderr] 203 |                 self.x = info.col * TILE_SIZE as i32 + self.collision_x.right() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:204:35
[INFO] [stderr]     |
[INFO] [stderr] 204 |                 self.velocity_x = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:206:17
[INFO] [stderr]     |
[INFO] [stderr] 206 |                 self.x += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:204:35
[INFO] [stderr]     |
[INFO] [stderr] 204 |                 self.velocity_x = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:206:17
[INFO] [stderr]     |
[INFO] [stderr] 206 |                 self.x += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:212:26
[INFO] [stderr]     |
[INFO] [stderr] 212 |                 self.x = info.col * TILE_SIZE as i32 - self.collision_x.right();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0369]: binary operation `<` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:219:62
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let gravity = if self.jump_active && self.velocity_y < 0.0 {
[INFO] [stderr]     |                                              --------------- ^ --- {float}
[INFO] [stderr]     |                                              |
[INFO] [stderr]     |                                              units::physics::Velocity
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::cmp::PartialOrd` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:212:26
[INFO] [stderr]     |
[INFO] [stderr] 212 |                 self.x = info.col * TILE_SIZE as i32 - self.collision_x.right();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0369]: binary operation `<` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:219:62
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let gravity = if self.jump_active && self.velocity_y < 0.0 {
[INFO] [stderr]     |                                              --------------- ^ --- {float}
[INFO] [stderr]     |                                              |
[INFO] [stderr]     |                                              units::physics::Velocity
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::cmp::PartialOrd` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: `if` and `else` have incompatible types
[INFO] [stderr]    --> src/player/mod.rs:222:13
[INFO] [stderr]     |
[INFO] [stderr] 219 |           let gravity = if self.jump_active && self.velocity_y < 0.0 {
[INFO] [stderr]     |  _______________________-
[INFO] [stderr] 220 | |             JUMP_GRAVITY
[INFO] [stderr]     | |             ------------ expected because of this
[INFO] [stderr] 221 | |         } else {
[INFO] [stderr] 222 | |             GRAVITY
[INFO] [stderr]     | |             ^^^^^^^ expected struct `units::physics::Acceleration`, found `f32`
[INFO] [stderr] 223 | |         };
[INFO] [stderr]     | |_________- `if` and `else` have incompatible types
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `min` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:225:73
[INFO] [stderr]     |
[INFO] [stderr] 225 |         self.velocity_y = (self.velocity_y + gravity * elapsed_time_ms).min(MAX_SPEED_Y);
[INFO] [stderr]     |                                                                         ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `min` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `min` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: `if` and `else` have incompatible types
[INFO] [stderr]    --> src/player/mod.rs:222:13
[INFO] [stderr]     |
[INFO] [stderr] 219 |           let gravity = if self.jump_active && self.velocity_y < 0.0 {
[INFO] [stderr]     |  _______________________-
[INFO] [stderr] 220 | |             JUMP_GRAVITY
[INFO] [stderr]     | |             ------------ expected because of this
[INFO] [stderr] 221 | |         } else {
[INFO] [stderr] 222 | |             GRAVITY
[INFO] [stderr]     | |             ^^^^^^^ expected struct `units::physics::Acceleration`, found `f32`
[INFO] [stderr] 223 | |         };
[INFO] [stderr]     | |_________- `if` and `else` have incompatible types
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `min` found for struct `units::physics::Velocity` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:225:73
[INFO] [stderr]     |
[INFO] [stderr] 225 |         self.velocity_y = (self.velocity_y + gravity * elapsed_time_ms).min(MAX_SPEED_Y);
[INFO] [stderr]     |                                                                         ^^^ method not found in `units::physics::Velocity`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/physics.rs:28:1
[INFO] [stderr]     |
[INFO] [stderr] 28  | pub struct Velocity(pub f64);
[INFO] [stderr]     | -----------------------------
[INFO] [stderr]     | |
[INFO] [stderr]     | method `min` not found for this
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]     | doesn't satisfy `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]     |
[INFO] [stderr]     = note: the method `min` exists but the following trait bounds were not satisfied:
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             `units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::iter::Iterator`
[INFO] [stderr]             `units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr]             which is required by `&mut units::physics::Velocity: std::cmp::Ord`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:228:40
[INFO] [stderr]     |
[INFO] [stderr] 228 |         let delta = (self.velocity_y * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `round` found for struct `units::drawing::Game` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:228:57
[INFO] [stderr]     |
[INFO] [stderr] 228 |         let delta = (self.velocity_y * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                                         ^^^^^ method not found in `units::drawing::Game`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/drawing.rs:17:1
[INFO] [stderr]     |
[INFO] [stderr] 17  | pub struct Game(pub f64);
[INFO] [stderr]     | ------------------------- method `round` not found for this
[INFO] [stderr]     |
[INFO] [stderr]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stderr]     = note: the following trait defines an item `round`, perhaps you need to implement it:
[INFO] [stderr]             candidate #1: `num_traits::float::Float`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:228:40
[INFO] [stderr]     |
[INFO] [stderr] 228 |         let delta = (self.velocity_y * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^ expected struct `units::physics::Millis`, found `f32`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `round` found for struct `units::drawing::Game` in the current scope
[INFO] [stderr]    --> src/player/mod.rs:228:57
[INFO] [stderr]     |
[INFO] [stderr] 228 |         let delta = (self.velocity_y * elapsed_time_ms).round() as i32;
[INFO] [stderr]     |                                                         ^^^^^ method not found in `units::drawing::Game`
[INFO] [stderr]     | 
[INFO] [stderr]    ::: src/units/drawing.rs:17:1
[INFO] [stderr]     |
[INFO] [stderr] 17  | pub struct Game(pub f64);
[INFO] [stderr]     | ------------------------- method `round` not found for this
[INFO] [stderr]     |
[INFO] [stderr]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stderr]     = note: the following trait defines an item `round`, perhaps you need to implement it:
[INFO] [stderr]             candidate #1: `num_traits::float::Float`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:236:26
[INFO] [stderr]     |
[INFO] [stderr] 236 |                 self.y = info.row * (TILE_SIZE as i32) - self.collision_y.bottom();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:236:26
[INFO] [stderr]     |
[INFO] [stderr] 236 |                 self.y = info.row * (TILE_SIZE as i32) - self.collision_y.bottom();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:237:35
[INFO] [stderr]     |
[INFO] [stderr] 237 |                 self.velocity_y = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:239:17
[INFO] [stderr]     |
[INFO] [stderr] 239 |                 self.y += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:237:35
[INFO] [stderr]     |
[INFO] [stderr] 237 |                 self.velocity_y = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:239:17
[INFO] [stderr]     |
[INFO] [stderr] 239 |                 self.y += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:245:26
[INFO] [stderr]     |
[INFO] [stderr] 245 |                 self.y = info.row * TILE_SIZE as i32 + self.collision_y.height() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:245:26
[INFO] [stderr]     |
[INFO] [stderr] 245 |                 self.y = info.row * TILE_SIZE as i32 + self.collision_y.height() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:251:26
[INFO] [stderr]     |
[INFO] [stderr] 251 |                 self.y = info.row * TILE_SIZE as i32 + self.collision_y.height() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:251:26
[INFO] [stderr]     |
[INFO] [stderr] 251 |                 self.y = info.row * TILE_SIZE as i32 + self.collision_y.height() as i32;
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:252:35
[INFO] [stderr]     |
[INFO] [stderr] 252 |                 self.velocity_y = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:254:17
[INFO] [stderr]     |
[INFO] [stderr] 254 |                 self.y += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:252:35
[INFO] [stderr]     |
[INFO] [stderr] 252 |                 self.velocity_y = 0.0;
[INFO] [stderr]     |                                   ^^^ expected struct `units::physics::Velocity`, found floating-point number
[INFO] [stderr] 
[INFO] [stderr] error[E0368]: binary assignment operation `+=` cannot be applied to type `units::drawing::Game`
[INFO] [stderr]    --> src/player/mod.rs:254:17
[INFO] [stderr]     |
[INFO] [stderr] 254 |                 self.y += delta;
[INFO] [stderr]     |                 ------^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 cannot use `+=` on type `units::drawing::Game`
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::ops::AddAssign` might be missing for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:262:26
[INFO] [stderr]     |
[INFO] [stderr] 262 |                 self.y = info.row * TILE_SIZE as i32 - self.collision_y.bottom();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:262:26
[INFO] [stderr]     |
[INFO] [stderr] 262 |                 self.y = info.row * TILE_SIZE as i32 - self.collision_y.bottom();
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `units::drawing::Game`, found `i32`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:310:39
[INFO] [stderr]     |
[INFO] [stderr] 310 |             if self.acceleration_x == 0 {
[INFO] [stderr]     |                                       ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0369]: binary operation `<` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:316:32
[INFO] [stderr]     |
[INFO] [stderr] 316 |             if self.velocity_y < 0.0 {
[INFO] [stderr]     |                --------------- ^ --- {float}
[INFO] [stderr]     |                |
[INFO] [stderr]     |                units::physics::Velocity
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::cmp::PartialOrd` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:327:26
[INFO] [stderr]     |
[INFO] [stderr] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:310:39
[INFO] [stderr]     |
[INFO] [stderr] 310 |             if self.acceleration_x == 0 {
[INFO] [stderr]     |                                       ^ expected struct `units::physics::Acceleration`, found integer
[INFO] [stderr] 
[INFO] [stderr] error[E0369]: binary operation `<` cannot be applied to type `units::physics::Velocity`
[INFO] [stderr]    --> src/player/mod.rs:316:32
[INFO] [stderr]     |
[INFO] [stderr] 316 |             if self.velocity_y < 0.0 {
[INFO] [stderr]     |                --------------- ^ --- {float}
[INFO] [stderr]     |                |
[INFO] [stderr]     |                units::physics::Velocity
[INFO] [stderr]     |
[INFO] [stderr]     = note: an implementation of `std::cmp::PartialOrd` might be missing for `units::physics::Velocity`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:327:26
[INFO] [stderr]     |
[INFO] [stderr] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:327:19
[INFO] [stderr]     |
[INFO] [stderr] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:327:19
[INFO] [stderr]     |
[INFO] [stderr] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:327:52
[INFO] [stderr]     |
[INFO] [stderr] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stderr]     |                                                    ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:327:52
[INFO] [stderr]     |
[INFO] [stderr] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stderr]     |                                                    ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:328:19
[INFO] [stderr]     |
[INFO] [stderr] 328 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:328:26
[INFO] [stderr]     |
[INFO] [stderr] 328 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:335:26
[INFO] [stderr]     |
[INFO] [stderr] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:328:19
[INFO] [stderr]     |
[INFO] [stderr] 328 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:328:26
[INFO] [stderr]     |
[INFO] [stderr] 328 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:335:26
[INFO] [stderr]     |
[INFO] [stderr] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:335:19
[INFO] [stderr]     |
[INFO] [stderr] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:335:52
[INFO] [stderr]     |
[INFO] [stderr] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stderr]     |                                                    ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:335:19
[INFO] [stderr]     |
[INFO] [stderr] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:335:52
[INFO] [stderr]     |
[INFO] [stderr] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stderr]     |                                                    ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:336:19
[INFO] [stderr]     |
[INFO] [stderr] 336 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:336:26
[INFO] [stderr]     |
[INFO] [stderr] 336 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:336:19
[INFO] [stderr]     |
[INFO] [stderr] 336 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:343:19
[INFO] [stderr]     |
[INFO] [stderr] 343 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:336:26
[INFO] [stderr]     |
[INFO] [stderr] 336 |                   self.y + self.collision_x.top(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:343:26
[INFO] [stderr]     |
[INFO] [stderr] 343 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:344:26
[INFO] [stderr]     |
[INFO] [stderr] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:344:19
[INFO] [stderr]     |
[INFO] [stderr] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:344:51
[INFO] [stderr]     |
[INFO] [stderr] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stderr]     |                                                   ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:343:19
[INFO] [stderr]     |
[INFO] [stderr] 343 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:343:26
[INFO] [stderr]     |
[INFO] [stderr] 343 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:344:26
[INFO] [stderr]     |
[INFO] [stderr] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:351:19
[INFO] [stderr]     |
[INFO] [stderr] 351 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:351:26
[INFO] [stderr]     |
[INFO] [stderr] 351 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:352:26
[INFO] [stderr]     |
[INFO] [stderr] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:352:19
[INFO] [stderr]     |
[INFO] [stderr] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:352:51
[INFO] [stderr]     |
[INFO] [stderr] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stderr]     |                                                   ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:344:19
[INFO] [stderr]     |
[INFO] [stderr] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:344:51
[INFO] [stderr]     |
[INFO] [stderr] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stderr]     |                                                   ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:351:19
[INFO] [stderr]     |
[INFO] [stderr] 351 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:351:26
[INFO] [stderr]     |
[INFO] [stderr] 351 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 73 previous errors
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:352:26
[INFO] [stderr]     |
[INFO] [stderr] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stderr]     |                          ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0277, E0308, E0368, E0369, E0599, E0605.
[INFO] [stderr] For more information about an error, try `rustc --explain E0277`.
[INFO] [stderr] error: could not compile `cave-story`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]    --> src/player/mod.rs:352:19
[INFO] [stderr]     |
[INFO] [stderr] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `i32: units::drawing::AsGame` is not satisfied
[INFO] [stderr]    --> src/player/mod.rs:352:51
[INFO] [stderr]     |
[INFO] [stderr] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stderr]     |                                                   ^ the trait `units::drawing::AsGame` is not implemented for `i32`
[INFO] [stderr]     |
[INFO] [stderr]     = note: required because of the requirements on the impl of `std::ops::Add<i32>` for `units::drawing::Game`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 73 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0277, E0308, E0368, E0369, E0599, E0605.
[INFO] [stderr] For more information about an error, try `rustc --explain E0277`.
[INFO] [stderr] error: could not compile `cave-story`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "6f85baeadc0c6d4c27d7a73a30743774386d1cb7b6374781bf10a35f51135f17"`
[INFO] running `"docker" "rm" "-f" "6f85baeadc0c6d4c27d7a73a30743774386d1cb7b6374781bf10a35f51135f17"`
[INFO] [stdout] 6f85baeadc0c6d4c27d7a73a30743774386d1cb7b6374781bf10a35f51135f17
