[INFO] cloning repository https://github.com/zack37/rust-cave-story
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zack37/rust-cave-story" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzack37%2Frust-cave-story", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzack37%2Frust-cave-story'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cd1283cce3e0082b28589aacfab9db859f1c9832
[INFO] testing zack37/rust-cave-story against try#c2e32f1c9652b13ed99608599c1e855462f421f3 for pr-146098-7
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzack37%2Frust-cave-story" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[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-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zack37/rust-cave-story on toolchain c2e32f1c9652b13ed99608599c1e855462f421f3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zack37/rust-cave-story 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" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: unused manifest key: attributes
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 676320c5a8dbe649c5294df62e80b091ef7407bd7aadd1fc829e68de357408a0
[INFO] running `Command { std: "docker" "start" "-a" "676320c5a8dbe649c5294df62e80b091ef7407bd7aadd1fc829e68de357408a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "676320c5a8dbe649c5294df62e80b091ef7407bd7aadd1fc829e68de357408a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "676320c5a8dbe649c5294df62e80b091ef7407bd7aadd1fc829e68de357408a0", kill_on_drop: false }`
[INFO] [stdout] 676320c5a8dbe649c5294df62e80b091ef7407bd7aadd1fc829e68de357408a0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 540d434cea946d50f2c15dd573bfc8614b8af849f617d5e766c4c6fdca4301da
[INFO] running `Command { std: "docker" "start" "-a" "540d434cea946d50f2c15dd573bfc8614b8af849f617d5e766c4c6fdca4301da", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: unused manifest key: attributes
[INFO] [stderr]    Compiling num-traits v0.1.37
[INFO] [stderr]    Compiling libc v0.2.23
[INFO] [stderr]    Compiling sdl2-sys v0.30.0
[INFO] [stderr]    Compiling lazy_static v0.2.8
[INFO] [stderr]    Compiling bitflags v0.7.0
[INFO] [stderr]    Compiling rand v0.3.15
[INFO] [stderr]    Compiling time v0.1.37
[INFO] [stderr]    Compiling num-integer v0.1.34
[INFO] [stderr]    Compiling num-iter v0.1.33
[INFO] [stderr]    Compiling num v0.1.37
[INFO] [stderr]    Compiling sdl2 v0.30.0
[INFO] [stderr]    Compiling cave-story v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `AsPixel`, `AsTile`, `HalfTile`, and `Pixel`
[INFO] [stdout]  --> src/units/mod.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub use units::drawing::{AsGame, AsTile, AsPixel, Game, Tile, HalfTile, Pixel};
[INFO] [stdout]   |                                  ^^^^^^  ^^^^^^^              ^^^^^^^^  ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AngularVelocity`, `Degrees`, `Frame`, and `Millis`
[INFO] [stdout]  --> src/units/mod.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use units::physics::{Millis, Velocity, Acceleration, Degrees, AngularVelocity, Frame, Fps};
[INFO] [stdout]   |                          ^^^^^^                          ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `step_by`
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(step_by)]
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/map/tile.rs:12:34
[INFO] [stdout]    |
[INFO] [stdout] 12 | type TileSprite = Rc<RefCell<Box<Sprite>>>;
[INFO] [stdout]    |                                  ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 12 | type TileSprite = Rc<RefCell<Box<dyn Sprite>>>;
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/map/mod.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     backdrop: Option<Box<Backdrop>>,
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     backdrop: Option<Box<dyn Backdrop>>,
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/player/mod.rs:51:39
[INFO] [stdout]    |
[INFO] [stdout] 51 |     sprites: HashMap<SpriteState, Box<Sprite>>,
[INFO] [stdout]    |                                       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |     sprites: HashMap<SpriteState, Box<dyn Sprite>>,
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/backdrop.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE) {
[INFO] [stdout]    |                      ^^^^^^^^^^^^ expected integer, found `Tile`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/backdrop.rs:24:44
[INFO] [stdout]    |
[INFO] [stdout] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE) {
[INFO] [stdout]    |                                    ------- ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
[INFO] [stdout]    |                                    |
[INFO] [stdout]    |                                    arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:424:7
[INFO] [stdout] help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
[INFO] [stdout]    |
[INFO] [stdout] 24 |         for x in (0..SCREEN_WIDTH).step_by(BACKGROUND_SIZE.try_into().unwrap()) {
[INFO] [stdout]    |                                                           ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/backdrop.rs:25:26
[INFO] [stdout]    |
[INFO] [stdout] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE) {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^ expected integer, found `Tile`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/backdrop.rs:25:49
[INFO] [stdout]    |
[INFO] [stdout] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE) {
[INFO] [stdout]    |                                         ------- ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:424:7
[INFO] [stdout] help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
[INFO] [stdout]    |
[INFO] [stdout] 25 |             for y in (0..SCREEN_HEIGHT).step_by(BACKGROUND_SIZE.try_into().unwrap()) {
[INFO] [stdout]    |                                                                ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `{integer}: AsGame` is not satisfied
[INFO] [stdout]    --> src/game.rs:37:54
[INFO] [stdout]     |
[INFO] [stdout]  37 |         let mut player = Player::new(graphics, width / 2, height / 2);
[INFO] [stdout]     |                                                      ^ the trait `AsGame` is not implemented for `{integer}`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `Div<{integer}>`
[INFO] [stdout]    --> src/units/drawing.rs:72:17
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl<T: AsGame> Div<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `{integer}: AsGame` is not satisfied
[INFO] [stdout]    --> src/game.rs:37:66
[INFO] [stdout]     |
[INFO] [stdout]  37 |         let mut player = Player::new(graphics, width / 2, height / 2);
[INFO] [stdout]     |                                                                  ^ the trait `AsGame` is not implemented for `{integer}`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `Div<{integer}>`
[INFO] [stdout]    --> src/units/drawing.rs:72:17
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl<T: AsGame> Div<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> src/graphics.rs:22:22
[INFO] [stdout]     |
[INFO] [stdout]  22 |                     .window("Cave Story: Rust", SCREEN_WIDTH, SCREEN_HEIGHT)
[INFO] [stdout]     |                      ^^^^^^                     ------------  ------------- expected `u32`, found `Tile`
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 expected `u32`, found `Tile`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.30.0/src/sdl2/video.rs:561:12
[INFO] [stdout]     |
[INFO] [stdout] 561 |     pub fn window(&self, title: &str, width: u32, height: u32) -> WindowBuilder {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `u32: AsTile` is not satisfied
[INFO] [stdout]    --> src/map/mod.rs:36:39
[INFO] [stdout]     |
[INFO] [stdout]  36 |         let num_rows = (SCREEN_HEIGHT / TILE_SIZE) as usize;
[INFO] [stdout]     |                                       ^ the trait `AsTile` is not implemented for `u32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsTile`
[INFO] [stdout]    --> src/units/drawing.rs:26:1
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl AsTile for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 124 | impl AsTile for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Tile` to implement `Div<u32>`
[INFO] [stdout]    --> src/units/drawing.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 | impl<T: AsTile> Div<T> for Tile {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `u32: AsTile` is not satisfied
[INFO] [stdout]    --> src/map/mod.rs:37:38
[INFO] [stdout]     |
[INFO] [stdout]  37 |         let num_cols = (SCREEN_WIDTH / TILE_SIZE) as usize;
[INFO] [stdout]     |                                      ^ the trait `AsTile` is not implemented for `u32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsTile`
[INFO] [stdout]    --> src/units/drawing.rs:26:1
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl AsTile for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 124 | impl AsTile for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Tile` to implement `Div<u32>`
[INFO] [stdout]    --> src/units/drawing.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 | impl<T: AsTile> Div<T> for Tile {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/map/mod.rs:51:47
[INFO] [stdout]    |
[INFO] [stdout] 51 | ...                   Box<Sprite>));
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |                                           Box<dyn Sprite>));
[INFO] [stdout]    |                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/map/mod.rs:58:50
[INFO] [stdout]    |
[INFO] [stdout] 58 | ...                   Box<Sprite>));
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |                                              Box<dyn Sprite>));
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/map/mod.rs:66:53
[INFO] [stdout]    |
[INFO] [stdout] 66 | ...                   Box<Sprite>));
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 66 |                                                 Box<dyn Sprite>));
[INFO] [stdout]    |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/map/mod.rs:74:53
[INFO] [stdout]    |
[INFO] [stdout] 74 | ...                   Box<Sprite>));
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |                                                 Box<dyn Sprite>));
[INFO] [stdout]    |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0605]: non-primitive cast: `drawing::Tile` as `usize`
[INFO] [stdout]   --> src/map/mod.rs:36:24
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let num_rows = (SCREEN_HEIGHT / TILE_SIZE) as usize;
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0605]: non-primitive cast: `drawing::Tile` as `usize`
[INFO] [stdout]   --> src/map/mod.rs:37:24
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let num_cols = (SCREEN_WIDTH / TILE_SIZE) as usize;
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> src/player/mod.rs:132:48
[INFO] [stdout]     |
[INFO] [stdout] 132 |         self.sprites[&self.get_sprite_state()].draw(graphics, self.x, self.y);
[INFO] [stdout]     |                                                ^^^^           ------  ------ expected `i32`, found `Game`
[INFO] [stdout]     |                                                               |
[INFO] [stdout]     |                                                               expected `i32`, found `Game`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/sprite.rs:9:8
[INFO] [stdout]     |
[INFO] [stdout]   9 |     fn draw(&self, graphics: &mut Graphics, x: i32, y: i32);
[INFO] [stdout]     |        ^^^^                                 -       -
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:147:55
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let acceleration_x = if self.acceleration_x < 0 {
[INFO] [stdout]     |                                 -------------------   ^ expected `Acceleration`, found integer
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 expected because this is `Acceleration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:153:41
[INFO] [stdout]     |
[INFO] [stdout] 153 |         } else if self.acceleration_x > 0 {
[INFO] [stdout]     |                   -------------------   ^ expected `Acceleration`, found integer
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   expected because this is `Acceleration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `if` and `else` have incompatible types
[INFO] [stdout]    --> src/player/mod.rs:160:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |            } else if self.acceleration_x > 0 {
[INFO] [stdout]     |  _________________-
[INFO] [stdout] 154 | |/             if self.on_ground {
[INFO] [stdout] 155 | ||                 WALKING_ACCELERATION
[INFO] [stdout] 156 | ||             } else {
[INFO] [stdout] 157 | ||                 AIR_ACCELERATION
[INFO] [stdout] 158 | ||             }
[INFO] [stdout]     | ||_____________- expected because of this
[INFO] [stdout] 159 | |          } else {
[INFO] [stdout] 160 | |              0.0
[INFO] [stdout]     | |              ^^^ expected `Acceleration`, found floating-point number
[INFO] [stdout] 161 | |          };
[INFO] [stdout]     | |__________- `if` and `else` have incompatible types
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `units::physics::Acceleration`
[INFO] [stdout]     |
[INFO] [stdout] 160 |             units::physics::Acceleration(0.0)
[INFO] [stdout]     |             +++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:164:52
[INFO] [stdout]     |
[INFO] [stdout] 164 |         self.velocity_x = if self.acceleration_x < 0 {
[INFO] [stdout]     |                              -------------------   ^ expected `Acceleration`, found integer
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              expected because this is `Acceleration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `max` exists for struct `Velocity`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/player/mod.rs:165:29
[INFO] [stdout]     |
[INFO] [stdout] 165 |             self.velocity_x.max(-MAX_SPEED_X)
[INFO] [stdout]     |                             ^^^ method cannot be called on `Velocity` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ------------------- method `max` not found for this struct because it doesn't satisfy `Velocity: Iterator` or `Velocity: Ord`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&Velocity: Ord`
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&mut Velocity: Ord`
[INFO] [stdout]             `Velocity: Iterator`
[INFO] [stdout]             which is required by `&mut Velocity: Iterator`
[INFO] [stdout] note: the trait `Iterator` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout] help: consider annotating `Velocity` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 + #[derive(Eq, Ord, PartialEq, PartialOrd)]
[INFO] [stdout]  29 | pub struct Velocity(pub f64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:166:41
[INFO] [stdout]     |
[INFO] [stdout] 166 |         } else if self.acceleration_x > 0 {
[INFO] [stdout]     |                   -------------------   ^ expected `Acceleration`, found integer
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   expected because this is `Acceleration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `min` exists for struct `Velocity`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/player/mod.rs:167:29
[INFO] [stdout]     |
[INFO] [stdout] 167 |             self.velocity_x.min(MAX_SPEED_X)
[INFO] [stdout]     |                             ^^^ method cannot be called on `Velocity` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ------------------- method `min` not found for this struct because it doesn't satisfy `Velocity: Iterator` or `Velocity: Ord`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&Velocity: Ord`
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&mut Velocity: Ord`
[INFO] [stdout]             `Velocity: Iterator`
[INFO] [stdout]             which is required by `&mut Velocity: Iterator`
[INFO] [stdout] note: the trait `Iterator` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout] help: consider annotating `Velocity` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 + #[derive(Eq, Ord, PartialEq, PartialOrd)]
[INFO] [stdout]  29 | pub struct Velocity(pub f64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `>` cannot be applied to type `Velocity`
[INFO] [stdout]    --> src/player/mod.rs:169:32
[INFO] [stdout]     |
[INFO] [stdout] 169 |             if self.velocity_x > 0.0 {
[INFO] [stdout]     |                --------------- ^ --- {float}
[INFO] [stdout]     |                |
[INFO] [stdout]     |                Velocity
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialOrd<{float}>` might be missing for `Velocity`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ must implement `PartialOrd<{float}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:170:47
[INFO] [stdout]     |
[INFO] [stdout] 170 |                 (self.velocity_x - FRICTION * elapsed_time_ms).max(0.0)
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^ expected `Millis`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `max` exists for struct `Velocity`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/player/mod.rs:170:64
[INFO] [stdout]     |
[INFO] [stdout] 170 |                 (self.velocity_x - FRICTION * elapsed_time_ms).max(0.0)
[INFO] [stdout]     |                                                                ^^^ method cannot be called on `Velocity` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ------------------- method `max` not found for this struct because it doesn't satisfy `Velocity: Iterator` or `Velocity: Ord`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&Velocity: Ord`
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&mut Velocity: Ord`
[INFO] [stdout]             `Velocity: Iterator`
[INFO] [stdout]             which is required by `&mut Velocity: Iterator`
[INFO] [stdout] note: the trait `Iterator` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout] help: consider annotating `Velocity` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 + #[derive(Eq, Ord, PartialEq, PartialOrd)]
[INFO] [stdout]  29 | pub struct Velocity(pub f64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:172:47
[INFO] [stdout]     |
[INFO] [stdout] 172 |                 (self.velocity_x + FRICTION * elapsed_time_ms).min(0.0)
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^ expected `Millis`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `min` exists for struct `Velocity`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/player/mod.rs:172:64
[INFO] [stdout]     |
[INFO] [stdout] 172 |                 (self.velocity_x + FRICTION * elapsed_time_ms).min(0.0)
[INFO] [stdout]     |                                                                ^^^ method cannot be called on `Velocity` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ------------------- method `min` not found for this struct because it doesn't satisfy `Velocity: Iterator` or `Velocity: Ord`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&Velocity: Ord`
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&mut Velocity: Ord`
[INFO] [stdout]             `Velocity: Iterator`
[INFO] [stdout]             which is required by `&mut Velocity: Iterator`
[INFO] [stdout] note: the trait `Iterator` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout] help: consider annotating `Velocity` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 + #[derive(Eq, Ord, PartialEq, PartialOrd)]
[INFO] [stdout]  29 | pub struct Velocity(pub f64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:179:40
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let delta = (self.velocity_x * elapsed_time_ms).round() as i32;
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^ expected `Millis`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `round` found for struct `drawing::Game` in the current scope
[INFO] [stdout]    --> src/player/mod.rs:179:57
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let delta = (self.velocity_x * elapsed_time_ms).round() as i32;
[INFO] [stdout]     |                                                         ^^^^^ method not found in `drawing::Game`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/drawing.rs:17:1
[INFO] [stdout]     |
[INFO] [stdout]  17 | pub struct Game(pub f64);
[INFO] [stdout]     | --------------- method `round` not found for this struct
[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 `round`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `num_traits::float::Float`
[INFO] [stdout] help: one of the expressions' fields has a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let delta = (self.velocity_x * elapsed_time_ms).0.round() as i32;
[INFO] [stdout]     |                                                         ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:187:26
[INFO] [stdout]     |
[INFO] [stdout] 187 |                 self.x = info.col * TILE_SIZE as i32 - self.collision_x.right();
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:188:35
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 self.velocity_x = 0.0;
[INFO] [stdout]     |                 ---------------   ^^^ expected `Velocity`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `units::physics::Velocity`
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 self.velocity_x = units::physics::Velocity(0.0);
[INFO] [stdout]     |                                   +++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:196:26
[INFO] [stdout]     |
[INFO] [stdout] 196 |                 self.x = info.col * TILE_SIZE as i32 + self.collision_x.right() as i32;
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:203:26
[INFO] [stdout]     |
[INFO] [stdout] 203 |                 self.x = info.col * TILE_SIZE as i32 + self.collision_x.right() as i32;
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:204:35
[INFO] [stdout]     |
[INFO] [stdout] 204 |                 self.velocity_x = 0.0;
[INFO] [stdout]     |                 ---------------   ^^^ expected `Velocity`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `units::physics::Velocity`
[INFO] [stdout]     |
[INFO] [stdout] 204 |                 self.velocity_x = units::physics::Velocity(0.0);
[INFO] [stdout]     |                                   +++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:212:26
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 self.x = info.col * TILE_SIZE as i32 - self.collision_x.right();
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `<` cannot be applied to type `Velocity`
[INFO] [stdout]    --> src/player/mod.rs:219:62
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let gravity = if self.jump_active && self.velocity_y < 0.0 {
[INFO] [stdout]     |                                              --------------- ^ --- {float}
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              Velocity
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialOrd<{float}>` might be missing for `Velocity`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ must implement `PartialOrd<{float}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `if` and `else` have incompatible types
[INFO] [stdout]    --> src/player/mod.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |           let gravity = if self.jump_active && self.velocity_y < 0.0 {
[INFO] [stdout]     |  _______________________-
[INFO] [stdout] 220 | |             JUMP_GRAVITY
[INFO] [stdout]     | |             ------------ expected because of this
[INFO] [stdout] 221 | |         } else {
[INFO] [stdout] 222 | |             GRAVITY
[INFO] [stdout]     | |             ^^^^^^^ expected `Acceleration`, found `f32`
[INFO] [stdout] 223 | |         };
[INFO] [stdout]     | |_________- `if` and `else` have incompatible types
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `min` exists for struct `Velocity`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/player/mod.rs:225:73
[INFO] [stdout]     |
[INFO] [stdout] 225 |         self.velocity_y = (self.velocity_y + gravity * elapsed_time_ms).min(MAX_SPEED_Y);
[INFO] [stdout]     |                                                                         ^^^ method cannot be called on `Velocity` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ------------------- method `min` not found for this struct because it doesn't satisfy `Velocity: Iterator` or `Velocity: Ord`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&Velocity: Ord`
[INFO] [stdout]             `Velocity: Ord`
[INFO] [stdout]             which is required by `&mut Velocity: Ord`
[INFO] [stdout]             `Velocity: Iterator`
[INFO] [stdout]             which is required by `&mut Velocity: Iterator`
[INFO] [stdout] note: the trait `Iterator` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout] help: consider annotating `Velocity` with `#[derive(Eq, Ord, PartialEq, PartialOrd)]`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 + #[derive(Eq, Ord, PartialEq, PartialOrd)]
[INFO] [stdout]  29 | pub struct Velocity(pub f64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:228:40
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let delta = (self.velocity_y * elapsed_time_ms).round() as i32;
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^ expected `Millis`, found `f32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `round` found for struct `drawing::Game` in the current scope
[INFO] [stdout]    --> src/player/mod.rs:228:57
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let delta = (self.velocity_y * elapsed_time_ms).round() as i32;
[INFO] [stdout]     |                                                         ^^^^^ method not found in `drawing::Game`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/units/drawing.rs:17:1
[INFO] [stdout]     |
[INFO] [stdout]  17 | pub struct Game(pub f64);
[INFO] [stdout]     | --------------- method `round` not found for this struct
[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 `round`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `num_traits::float::Float`
[INFO] [stdout] help: one of the expressions' fields has a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let delta = (self.velocity_y * elapsed_time_ms).0.round() as i32;
[INFO] [stdout]     |                                                         ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:236:26
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 self.y = info.row * (TILE_SIZE as i32) - self.collision_y.bottom();
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:237:35
[INFO] [stdout]     |
[INFO] [stdout] 237 |                 self.velocity_y = 0.0;
[INFO] [stdout]     |                 ---------------   ^^^ expected `Velocity`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `units::physics::Velocity`
[INFO] [stdout]     |
[INFO] [stdout] 237 |                 self.velocity_y = units::physics::Velocity(0.0);
[INFO] [stdout]     |                                   +++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:245:26
[INFO] [stdout]     |
[INFO] [stdout] 245 |                 self.y = info.row * TILE_SIZE as i32 + self.collision_y.height() as i32;
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:251:26
[INFO] [stdout]     |
[INFO] [stdout] 251 |                 self.y = info.row * TILE_SIZE as i32 + self.collision_y.height() as i32;
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:252:35
[INFO] [stdout]     |
[INFO] [stdout] 252 |                 self.velocity_y = 0.0;
[INFO] [stdout]     |                 ---------------   ^^^ expected `Velocity`, found floating-point number
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `units::physics::Velocity`
[INFO] [stdout]     |
[INFO] [stdout] 252 |                 self.velocity_y = units::physics::Velocity(0.0);
[INFO] [stdout]     |                                   +++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:262:26
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 self.y = info.row * TILE_SIZE as i32 - self.collision_y.bottom();
[INFO] [stdout]     |                 ------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Game`, found `i32`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected due to the type of this binding
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/player/mod.rs:310:39
[INFO] [stdout]     |
[INFO] [stdout] 310 |             if self.acceleration_x == 0 {
[INFO] [stdout]     |                -------------------    ^ expected `Acceleration`, found integer
[INFO] [stdout]     |                |
[INFO] [stdout]     |                expected because this is `Acceleration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `<` cannot be applied to type `Velocity`
[INFO] [stdout]    --> src/player/mod.rs:316:32
[INFO] [stdout]     |
[INFO] [stdout] 316 |             if self.velocity_y < 0.0 {
[INFO] [stdout]     |                --------------- ^ --- {float}
[INFO] [stdout]     |                |
[INFO] [stdout]     |                Velocity
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialOrd<{float}>` might be missing for `Velocity`
[INFO] [stdout]    --> src/units/physics.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout]  28 | pub struct Velocity(pub f64);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ must implement `PartialOrd<{float}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:327:26
[INFO] [stdout]     |
[INFO] [stdout] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:327:52
[INFO] [stdout]     |
[INFO] [stdout] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stdout]     |                                                    ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:328:26
[INFO] [stdout]     |
[INFO] [stdout] 328 |                   self.y + self.collision_x.top(),
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> src/player/mod.rs:327:9
[INFO] [stdout]     |
[INFO] [stdout] 327 |         Rect::new(self.x + self.collision_x.left() + delta,
[INFO] [stdout]     |         ^^^^^^^^^ ---------------------------------------- expected `i32`, found `Game`
[INFO] [stdout] 328 |                   self.y + self.collision_x.top(),
[INFO] [stdout]     |                   ------------------------------- expected `i32`, found `Game`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.30.0/src/sdl2/rect.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  83 |     pub fn new(x: i32, y: i32, width: u32, height: u32) -> Rect {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:335:26
[INFO] [stdout]     |
[INFO] [stdout] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:335:52
[INFO] [stdout]     |
[INFO] [stdout] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stdout]     |                                                    ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:336:26
[INFO] [stdout]     |
[INFO] [stdout] 336 |                   self.y + self.collision_x.top(),
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> src/player/mod.rs:335:9
[INFO] [stdout]     |
[INFO] [stdout] 335 |         Rect::new(self.x + self.collision_x.left() + (self.collision_x.width() / 2) as i32,
[INFO] [stdout]     |         ^^^^^^^^^ ------------------------------------------------------------------------ expected `i32`, found `Game`
[INFO] [stdout] 336 |                   self.y + self.collision_x.top(),
[INFO] [stdout]     |                   ------------------------------- expected `i32`, found `Game`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.30.0/src/sdl2/rect.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  83 |     pub fn new(x: i32, y: i32, width: u32, height: u32) -> Rect {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:343:26
[INFO] [stdout]     |
[INFO] [stdout] 343 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:344:26
[INFO] [stdout]     |
[INFO] [stdout] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:344:51
[INFO] [stdout]     |
[INFO] [stdout] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stdout]     |                                                   ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> src/player/mod.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stdout]     |         ^^^^^^^^^ -------------------------------- expected `i32`, found `Game`
[INFO] [stdout] 344 |                   self.y + self.collision_y.top() + delta,
[INFO] [stdout]     |                   --------------------------------------- expected `i32`, found `Game`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.30.0/src/sdl2/rect.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  83 |     pub fn new(x: i32, y: i32, width: u32, height: u32) -> Rect {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:351:26
[INFO] [stdout]     |
[INFO] [stdout] 351 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:352:26
[INFO] [stdout]     |
[INFO] [stdout] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stdout]     |                          ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `i32: AsGame` is not satisfied
[INFO] [stdout]    --> src/player/mod.rs:352:51
[INFO] [stdout]     |
[INFO] [stdout] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stdout]     |                                                   ^ the trait `AsGame` is not implemented for `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: the following other types implement trait `AsGame`
[INFO] [stdout]    --> src/units/drawing.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl AsGame for Game {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Game`
[INFO] [stdout] ...
[INFO] [stdout] 105 | impl AsGame for HalfTile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `HalfTile`
[INFO] [stdout] ...
[INFO] [stdout] 116 | impl AsGame for Tile {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `drawing::Tile`
[INFO] [stdout] note: required for `drawing::Game` to implement `std::ops::Add<i32>`
[INFO] [stdout]    --> src/units/drawing.rs:42:17
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl<T: AsGame> Add<T> for Game {
[INFO] [stdout]     |         ------  ^^^^^^     ^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> src/player/mod.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |         Rect::new(self.x + self.collision_y.left(),
[INFO] [stdout]     |         ^^^^^^^^^ -------------------------------- expected `i32`, found `Game`
[INFO] [stdout] 352 |                   self.y + self.collision_y.top() + (self.collision_y.height() / 2) as i32,
[INFO] [stdout]     |                   ------------------------------------------------------------------------ expected `i32`, found `Game`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.30.0/src/sdl2/rect.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  83 |     pub fn new(x: i32, y: i32, width: u32, height: u32) -> Rect {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `elapsed_time`
[INFO] [stdout]   --> src/sprite.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn update(&mut self, elapsed_time: Duration) {}
[INFO] [stdout]    |                          ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elapsed_time`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0369, E0599, E0605, E0635.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `cave-story` (bin "cave-story") due to 62 previous errors; 10 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "540d434cea946d50f2c15dd573bfc8614b8af849f617d5e766c4c6fdca4301da", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "540d434cea946d50f2c15dd573bfc8614b8af849f617d5e766c4c6fdca4301da", kill_on_drop: false }`
[INFO] [stdout] 540d434cea946d50f2c15dd573bfc8614b8af849f617d5e766c4c6fdca4301da
