[INFO] updating cached repository jakmeier/cheer-them-up [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jakmeier/cheer-them-up [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jakmeier/cheer-them-up" "work/ex/beta-1.38-1/sources/1.37.0/gh/jakmeier/cheer-them-up"` [INFO] [stderr] Cloning into 'work/ex/beta-1.38-1/sources/1.37.0/gh/jakmeier/cheer-them-up'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jakmeier/cheer-them-up" "work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/jakmeier/cheer-them-up"` [INFO] [stderr] Cloning into 'work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/jakmeier/cheer-them-up'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 50ffcf5972cc3f19969baa888c71ff1bf73568a5 [INFO] sha for GitHub repo jakmeier/cheer-them-up: 50ffcf5972cc3f19969baa888c71ff1bf73568a5 [INFO] validating manifest of jakmeier/cheer-them-up on toolchain 1.37.0 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of jakmeier/cheer-them-up on toolchain beta-2019-08-13 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing jakmeier/cheer-them-up [INFO] finished frobbing jakmeier/cheer-them-up [INFO] frobbed toml for jakmeier/cheer-them-up written to work/ex/beta-1.38-1/sources/1.37.0/gh/jakmeier/cheer-them-up/Cargo.toml [INFO] started frobbing jakmeier/cheer-them-up [INFO] finished frobbing jakmeier/cheer-them-up [INFO] frobbed toml for jakmeier/cheer-them-up written to work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/jakmeier/cheer-them-up/Cargo.toml [INFO] crate jakmeier/cheer-them-up already has a lockfile, it will not be regenerated [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] error: the lock file /mnt/big/crater/work/ex/beta-1.38-1/sources/1.37.0/gh/jakmeier/cheer-them-up/Cargo.lock needs to be updated but --locked was passed to prevent this [INFO] the lockfile is outdated, regenerating it [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] [stderr] Updating git repository `https://github.com/jakmeier/rusty-shortest-path-map` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] [stderr] Updating git repository `https://github.com/jakmeier/rusty-shortest-path-map` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] testing jakmeier/cheer-them-up against beta-2019-08-13 for beta-1.38-1 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.38-1/worker-4/beta-2019-08-13:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/jakmeier/cheer-them-up:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+beta-2019-08-13" "build" "--frozen"` [INFO] [stdout] 8f3fdd9478631c57f8dbf081e79e136327825722ca0390a2202cb9521a0a45ec [INFO] running `"docker" "start" "-a" "8f3fdd9478631c57f8dbf081e79e136327825722ca0390a2202cb9521a0a45ec"` [INFO] [stderr] Compiling lzw v0.9.0 [INFO] [stderr] Compiling piston-texture v0.3.0 [INFO] [stderr] Compiling jkm_shortest_path_map v1.2.1 (https://github.com/jakmeier/rusty-shortest-path-map#84ef66f8) [INFO] [stderr] Compiling xml-rs v0.2.2 [INFO] [stderr] Compiling draw_state v0.3.0 [INFO] [stderr] Compiling freetype-sys v0.3.1 [INFO] [stderr] Compiling miniz-sys v0.1.12 [INFO] [stderr] Compiling pistoncore-input v0.8.1 [INFO] [stderr] Compiling dylib v0.0.1 [INFO] [stderr] Compiling wayland-client v0.5.12 [INFO] [stderr] Compiling piston2d-graphics v0.15.0 [INFO] [stderr] Compiling osmesa-sys v0.0.5 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Compiling fs2 v0.2.5 [INFO] [stderr] Compiling gif v0.7.0 [INFO] [stderr] Compiling x11-dl v2.3.1 [INFO] [stderr] Compiling gl_generator v0.4.2 [INFO] [stderr] Compiling gfx_core v0.1.2 [INFO] [stderr] Compiling cookie v0.2.5 [INFO] [stderr] Compiling tempfile v2.2.0 [INFO] [stderr] Compiling serde_json v0.9.10 [INFO] [stderr] Compiling enum_primitive v0.1.1 [INFO] [stderr] Compiling flate2 v0.2.20 [INFO] [stderr] Compiling pistoncore-window v0.15.0 [INFO] [stderr] Compiling memmap v0.2.3 [INFO] [stderr] Compiling freetype-rs v0.5.0 [INFO] [stderr] Compiling hyper v0.9.18 [INFO] [stderr] Compiling gl v0.5.2 [INFO] [stderr] Compiling glutin v0.4.9 [INFO] [stderr] Compiling pistoncore-event_loop v0.18.0 [INFO] [stderr] Compiling gfx_gl v0.3.1 [INFO] [stderr] Compiling target_build_utils v0.3.1 [INFO] [stderr] Compiling png v0.4.3 [INFO] [stderr] Compiling piston v0.18.0 [INFO] [stderr] Compiling jpeg-decoder v0.1.15 [INFO] [stderr] Compiling image v0.7.2 [INFO] [stderr] Compiling gfx v0.9.1 [INFO] [stderr] Compiling gfx_device_gl v0.8.2 [INFO] [stderr] Compiling libloading v0.3.4 [INFO] [stderr] Compiling piston-gfx_texture v0.10.0 [INFO] [stderr] Compiling piston2d-gfx_graphics v0.23.1 [INFO] [stderr] Compiling dlib v0.3.1 [INFO] [stderr] Compiling wayland-sys v0.5.11 [INFO] [stderr] Compiling wayland-window v0.2.3 [INFO] [stderr] Compiling wayland-kbd v0.3.6 [INFO] [stderr] Compiling pistoncore-glutin_window v0.21.0 [INFO] [stderr] Compiling piston_window v0.38.0 [INFO] [stderr] Compiling cheer_them_up_game v1.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:523:50 [INFO] [stderr] | [INFO] [stderr] 523 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:523:72 [INFO] [stderr] | [INFO] [stderr] 523 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:524:50 [INFO] [stderr] | [INFO] [stderr] 524 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:524:73 [INFO] [stderr] | [INFO] [stderr] 524 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:527:50 [INFO] [stderr] | [INFO] [stderr] 527 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildUniversity)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:527:72 [INFO] [stderr] | [INFO] [stderr] 527 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildUniversity)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:528:50 [INFO] [stderr] | [INFO] [stderr] 528 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmith)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:528:72 [INFO] [stderr] | [INFO] [stderr] 528 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmith)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:530:51 [INFO] [stderr] | [INFO] [stderr] 530 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildIronFactory)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:530:73 [INFO] [stderr] | [INFO] [stderr] 530 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildIronFactory)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:533:51 [INFO] [stderr] | [INFO] [stderr] 533 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBank)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:533:73 [INFO] [stderr] | [INFO] [stderr] 533 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBank)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:538:51 [INFO] [stderr] | [INFO] [stderr] 538 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Lumber)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:538:73 [INFO] [stderr] | [INFO] [stderr] 538 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Lumber)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:541:51 [INFO] [stderr] | [INFO] [stderr] 541 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:541:73 [INFO] [stderr] | [INFO] [stderr] 541 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:542:51 [INFO] [stderr] | [INFO] [stderr] 542 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:542:74 [INFO] [stderr] | [INFO] [stderr] 542 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:546:95 [INFO] [stderr] | [INFO] [stderr] 546 | if level < IRON_FACTORY_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeIronFactory{level: level-1}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:546:117 [INFO] [stderr] | [INFO] [stderr] 546 | if level < IRON_FACTORY_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeIronFactory{level: level-1}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:549:83 [INFO] [stderr] | [INFO] [stderr] 549 | if !upgrades.industrialisation { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::Industrialisation)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:549:106 [INFO] [stderr] | [INFO] [stderr] 549 | if !upgrades.industrialisation { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::Industrialisation)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:550:87 [INFO] [stderr] | [INFO] [stderr] 550 | if level >= 2 && !upgrades.economy { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::EconomyResearch)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:550:110 [INFO] [stderr] | [INFO] [stderr] 550 | if level >= 2 && !upgrades.economy { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::EconomyResearch)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:552:51 [INFO] [stderr] | [INFO] [stderr] 552 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:SLOW_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:552:74 [INFO] [stderr] | [INFO] [stderr] 552 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:SLOW_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:555:51 [INFO] [stderr] | [INFO] [stderr] 555 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:ROCKET_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:555:74 [INFO] [stderr] | [INFO] [stderr] 555 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:ROCKET_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:558:51 [INFO] [stderr] | [INFO] [stderr] 558 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeCandy{level: upgrades.tower_upgrades[SLOW_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:558:74 [INFO] [stderr] | [INFO] [stderr] 558 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeCandy{level: upgrades.tower_upgrades[SLOW_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:561:51 [INFO] [stderr] | [INFO] [stderr] 561 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeSurprise{level: upgrades.tower_upgrades[ROCKET_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:561:74 [INFO] [stderr] | [INFO] [stderr] 561 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeSurprise{level: upgrades.tower_upgrades[ROCKET_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:563:89 [INFO] [stderr] | [INFO] [stderr] 563 | if level < UNIVERSITY_UPGRADES as u32 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeUniversity{level:level}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:563:111 [INFO] [stderr] | [INFO] [stderr] 563 | if level < UNIVERSITY_UPGRADES as u32 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeUniversity{level:level}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:566:91 [INFO] [stderr] | [INFO] [stderr] 566 | if !upgrades.tower_researched[AOE_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:AOE_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:566:114 [INFO] [stderr] | [INFO] [stderr] 566 | if !upgrades.tower_researched[AOE_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:AOE_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:567:92 [INFO] [stderr] | [INFO] [stderr] 567 | if !upgrades.tower_researched[WALL_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:WALL_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:567:115 [INFO] [stderr] | [INFO] [stderr] 567 | if !upgrades.tower_researched[WALL_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:WALL_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:569:51 [INFO] [stderr] | [INFO] [stderr] 569 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmithII)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:569:73 [INFO] [stderr] | [INFO] [stderr] 569 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmithII)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:570:51 [INFO] [stderr] | [INFO] [stderr] 570 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBarracks)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:570:73 [INFO] [stderr] | [INFO] [stderr] 570 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBarracks)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:571:51 [INFO] [stderr] | [INFO] [stderr] 571 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildArcheryRange)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:571:73 [INFO] [stderr] | [INFO] [stderr] 571 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildArcheryRange)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:576:87 [INFO] [stderr] | [INFO] [stderr] 576 | if level < BANK_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeBank{level: level-1 }));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:576:109 [INFO] [stderr] | [INFO] [stderr] 576 | if level < BANK_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeBank{level: level-1 }));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:580:52 [INFO] [stderr] | [INFO] [stderr] 580 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeGold{level: upgrades.gold_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:580:75 [INFO] [stderr] | [INFO] [stderr] 580 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeGold{level: upgrades.gold_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:583:52 [INFO] [stderr] | [INFO] [stderr] 583 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeIron{level: upgrades.iron_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:583:75 [INFO] [stderr] | [INFO] [stderr] 583 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeIron{level: upgrades.iron_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:586:52 [INFO] [stderr] | [INFO] [stderr] 586 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeCrystal{level: upgrades.crystal_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:586:75 [INFO] [stderr] | [INFO] [stderr] 586 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeCrystal{level: upgrades.crystal_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:591:51 [INFO] [stderr] | [INFO] [stderr] 591 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[BASIC_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:591:74 [INFO] [stderr] | [INFO] [stderr] 591 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[BASIC_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:594:51 [INFO] [stderr] | [INFO] [stderr] 594 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[AOE_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:594:74 [INFO] [stderr] | [INFO] [stderr] 594 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[AOE_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:599:51 [INFO] [stderr] | [INFO] [stderr] 599 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[BASIC_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:599:74 [INFO] [stderr] | [INFO] [stderr] 599 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[BASIC_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:602:51 [INFO] [stderr] | [INFO] [stderr] 602 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[AOE_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:602:74 [INFO] [stderr] | [INFO] [stderr] 602 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[AOE_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:605:51 [INFO] [stderr] | [INFO] [stderr] 605 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: WALL_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[WALL_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:605:74 [INFO] [stderr] | [INFO] [stderr] 605 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: WALL_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[WALL_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:610:51 [INFO] [stderr] | [INFO] [stderr] 610 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[BASIC_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:610:74 [INFO] [stderr] | [INFO] [stderr] 610 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[BASIC_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:613:51 [INFO] [stderr] | [INFO] [stderr] 613 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[AOE_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:613:74 [INFO] [stderr] | [INFO] [stderr] 613 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[AOE_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:618:48 [INFO] [stderr] | [INFO] [stderr] 618 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Sell)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:618:70 [INFO] [stderr] | [INFO] [stderr] 618 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Sell)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:620:54 [INFO] [stderr] | [INFO] [stderr] 620 | else { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Buy)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:620:77 [INFO] [stderr] | [INFO] [stderr] 620 | else { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Buy)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/aggressive_enemy.rs:50:79 [INFO] [stderr] | [INFO] [stderr] 50 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [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/defence/enemy/ghost_enemy.rs:49:79 [INFO] [stderr] | [INFO] [stderr] 49 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/ghost_boss.rs:67:80 [INFO] [stderr] | [INFO] [stderr] 67 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/troll.rs:57:80 [INFO] [stderr] | [INFO] [stderr] 57 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/mod.rs:95:79 [INFO] [stderr] | [INFO] [stderr] 95 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/mod.rs:154:46 [INFO] [stderr] | [INFO] [stderr] 154 | fn attack_tower(&mut self, target: &mut Box, dt: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/mod.rs:256:45 [INFO] [stderr] | [INFO] [stderr] 256 | fn find_target(&mut self, towers: &Vec>, destination_x: f64, destination_y: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/basic_tower.rs:49:49 [INFO] [stderr] | [INFO] [stderr] 49 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:55:49 [INFO] [stderr] | [INFO] [stderr] 55 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: `...` range patterns are deprecated [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:8 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ help: use `..=` for an inclusive range [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/wall.rs:41:49 [INFO] [stderr] | [INFO] [stderr] 41 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/slow_tower.rs:49:49 [INFO] [stderr] | [INFO] [stderr] 49 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/rocket_tower.rs:54:49 [INFO] [stderr] | [INFO] [stderr] 54 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/mod.rs:76:54 [INFO] [stderr] | [INFO] [stderr] 76 | fn update(&mut self, dt: f64, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/mod.rs:84:40 [INFO] [stderr] | [INFO] [stderr] 84 | fn perform_attack(&self, &mut Vec>, upgrades: &GameState,) -> Option ; [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/projectile.rs:75:59 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn update (&mut self, dt: f64, enemies: &mut Vec>) -> Option<(f64,f64,f64)> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/projectile.rs:110:41 [INFO] [stderr] | [INFO] [stderr] 110 | fn collide (&mut self, enemy: &mut Box) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:11:51 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn towers_with_rectangle(collection: &Vec>, x: f64, y: f64, w: f64, h: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:21:52 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn enemies_with_rectangle(collection: &Vec>, x: f64, y: f64, w: f64, h: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:31:59 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn find_all_enemies_in_rectangle(collection: &Vec>, x: f64, y: f64, w: f64, h: f64) -> Vec { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:43:61 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn find_closest_enemy(x: f64, y: f64, enemies: &Vec>) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:61:56 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn find_all_enemies_in_circle(collection: &Vec>, x: f64, y: f64, r: f64) -> Vec { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:75:50 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn enemies_with_segment(collection: &Vec>, x0: f64, y0: f64, s: f64, t: f64) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:34:54 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn update(&mut self, dt: f64, vec: &mut Vec>) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:288:48 [INFO] [stderr] | [INFO] [stderr] 288 | fn basic_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:299:47 [INFO] [stderr] | [INFO] [stderr] 299 | fn slow_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:310:47 [INFO] [stderr] | [INFO] [stderr] 310 | fn fast_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:321:53 [INFO] [stderr] | [INFO] [stderr] 321 | fn aggressive_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:332:45 [INFO] [stderr] | [INFO] [stderr] 332 | fn alien_boss(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:337:45 [INFO] [stderr] | [INFO] [stderr] 337 | fn alien_gang(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:353:41 [INFO] [stderr] | [INFO] [stderr] 353 | fn devils(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:364:45 [INFO] [stderr] | [INFO] [stderr] 364 | fn devil_boss(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:368:45 [INFO] [stderr] | [INFO] [stderr] 368 | fn devil_gang(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:384:41 [INFO] [stderr] | [INFO] [stderr] 384 | fn ghosts(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:395:45 [INFO] [stderr] | [INFO] [stderr] 395 | fn ghost_boss(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:399:45 [INFO] [stderr] | [INFO] [stderr] 399 | fn ghost_gang(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:416:40 [INFO] [stderr] | [INFO] [stderr] 416 | fn troll(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:421:63 [INFO] [stderr] | [INFO] [stderr] 421 | fn troll_and_aggressive_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:438:44 [INFO] [stderr] | [INFO] [stderr] 438 | fn troll_mix(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:448:23 [INFO] [stderr] | [INFO] [stderr] 448 | let new_enemy: Box; [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:44:18 [INFO] [stderr] | [INFO] [stderr] 44 | towers: Vec>, [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | tower_templates: [Box;NUMBER_OF_TOWERS], [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:47:19 [INFO] [stderr] | [INFO] [stderr] 47 | enemies: Vec>, [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:66:24 [INFO] [stderr] | [INFO] [stderr] 66 | let enemies: Vec> = Vec::new(); [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:113:20 [INFO] [stderr] | [INFO] [stderr] 113 | let t_temp :[Box;NUMBER_OF_TOWERS] = [ [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:360:23 [INFO] [stderr] | [INFO] [stderr] 360 | let new_tower : Box = [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/lib.rs:185:116 [INFO] [stderr] | [INFO] [stderr] 185 | match self.defence.draw(g, c.transform.trans(self.eco_def_split_coordinate, self.header_height), c.draw_state, (self.screen_width - self.eco_def_split_coordinate), (self.screen_height-self.header_height), [self.mouse_x-self.eco_def_split_coordinate, self.mouse_y-self.header_height], &self.state) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/lib.rs:185:169 [INFO] [stderr] | [INFO] [stderr] 185 | match self.defence.draw(g, c.transform.trans(self.eco_def_split_coordinate, self.header_height), c.draw_state, (self.screen_width - self.eco_def_split_coordinate), (self.screen_height-self.header_height), [self.mouse_x-self.eco_def_split_coordinate, self.mouse_y-self.header_height], &self.state) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/map/mod.rs:15:52 [INFO] [stderr] | [INFO] [stderr] 15 | use definitions::{MapUserInteraction, DrawRequest, Drawable, GameState, Settings, Language}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/defence/mod.rs:13:19 [INFO] [stderr] | [INFO] [stderr] 13 | use definitions::{Drawable, DrawRequest, DefenceUserInteraction, GameState, Statistics, Settings}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:4 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(illegal_floating_point_literal_pattern)]` on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/map/mod.rs:138:7 [INFO] [stderr] | [INFO] [stderr] 138 | for mut l in self.land_matrix.iter_mut() { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:4 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 41s [INFO] running `"docker" "inspect" "8f3fdd9478631c57f8dbf081e79e136327825722ca0390a2202cb9521a0a45ec"` [INFO] running `"docker" "rm" "-f" "8f3fdd9478631c57f8dbf081e79e136327825722ca0390a2202cb9521a0a45ec"` [INFO] [stdout] 8f3fdd9478631c57f8dbf081e79e136327825722ca0390a2202cb9521a0a45ec [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.38-1/worker-4/beta-2019-08-13:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/jakmeier/cheer-them-up:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+beta-2019-08-13" "test" "--frozen" "--no-run"` [INFO] [stdout] ca8a30c67e9d8d04cff57ef6ae9cee486955a87c4d2badf81f1307d70b7ef431 [INFO] running `"docker" "start" "-a" "ca8a30c67e9d8d04cff57ef6ae9cee486955a87c4d2badf81f1307d70b7ef431"` [INFO] [stderr] Compiling cheer_them_up_game v1.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:523:50 [INFO] [stderr] | [INFO] [stderr] 523 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:523:72 [INFO] [stderr] | [INFO] [stderr] 523 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:524:50 [INFO] [stderr] | [INFO] [stderr] 524 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:524:73 [INFO] [stderr] | [INFO] [stderr] 524 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:527:50 [INFO] [stderr] | [INFO] [stderr] 527 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildUniversity)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:527:72 [INFO] [stderr] | [INFO] [stderr] 527 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildUniversity)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:528:50 [INFO] [stderr] | [INFO] [stderr] 528 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmith)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:528:72 [INFO] [stderr] | [INFO] [stderr] 528 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmith)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:530:51 [INFO] [stderr] | [INFO] [stderr] 530 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildIronFactory)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:530:73 [INFO] [stderr] | [INFO] [stderr] 530 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildIronFactory)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:533:51 [INFO] [stderr] | [INFO] [stderr] 533 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBank)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:533:73 [INFO] [stderr] | [INFO] [stderr] 533 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBank)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:538:51 [INFO] [stderr] | [INFO] [stderr] 538 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Lumber)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:538:73 [INFO] [stderr] | [INFO] [stderr] 538 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Lumber)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:541:51 [INFO] [stderr] | [INFO] [stderr] 541 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:541:73 [INFO] [stderr] | [INFO] [stderr] 541 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildOracle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:542:51 [INFO] [stderr] | [INFO] [stderr] 542 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:542:74 [INFO] [stderr] | [INFO] [stderr] 542 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]) ,ButtonType::Concrete)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:546:95 [INFO] [stderr] | [INFO] [stderr] 546 | if level < IRON_FACTORY_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeIronFactory{level: level-1}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:546:117 [INFO] [stderr] | [INFO] [stderr] 546 | if level < IRON_FACTORY_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeIronFactory{level: level-1}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:549:83 [INFO] [stderr] | [INFO] [stderr] 549 | if !upgrades.industrialisation { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::Industrialisation)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:549:106 [INFO] [stderr] | [INFO] [stderr] 549 | if !upgrades.industrialisation { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::Industrialisation)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:550:87 [INFO] [stderr] | [INFO] [stderr] 550 | if level >= 2 && !upgrades.economy { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::EconomyResearch)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:550:110 [INFO] [stderr] | [INFO] [stderr] 550 | if level >= 2 && !upgrades.economy { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::EconomyResearch)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:552:51 [INFO] [stderr] | [INFO] [stderr] 552 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:SLOW_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:552:74 [INFO] [stderr] | [INFO] [stderr] 552 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:SLOW_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:555:51 [INFO] [stderr] | [INFO] [stderr] 555 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:ROCKET_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:555:74 [INFO] [stderr] | [INFO] [stderr] 555 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:ROCKET_TID})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:558:51 [INFO] [stderr] | [INFO] [stderr] 558 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeCandy{level: upgrades.tower_upgrades[SLOW_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:558:74 [INFO] [stderr] | [INFO] [stderr] 558 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeCandy{level: upgrades.tower_upgrades[SLOW_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:561:51 [INFO] [stderr] | [INFO] [stderr] 561 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeSurprise{level: upgrades.tower_upgrades[ROCKET_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:561:74 [INFO] [stderr] | [INFO] [stderr] 561 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeSurprise{level: upgrades.tower_upgrades[ROCKET_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:563:89 [INFO] [stderr] | [INFO] [stderr] 563 | if level < UNIVERSITY_UPGRADES as u32 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeUniversity{level:level}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:563:111 [INFO] [stderr] | [INFO] [stderr] 563 | if level < UNIVERSITY_UPGRADES as u32 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeUniversity{level:level}));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:566:91 [INFO] [stderr] | [INFO] [stderr] 566 | if !upgrades.tower_researched[AOE_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:AOE_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:566:114 [INFO] [stderr] | [INFO] [stderr] 566 | if !upgrades.tower_researched[AOE_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:AOE_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:567:92 [INFO] [stderr] | [INFO] [stderr] 567 | if !upgrades.tower_researched[WALL_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:WALL_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:567:115 [INFO] [stderr] | [INFO] [stderr] 567 | if !upgrades.tower_researched[WALL_TID] { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5,0.5,1.0,0.9]), ButtonType::ResearchTower{index:WALL_TID})); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:569:51 [INFO] [stderr] | [INFO] [stderr] 569 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmithII)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:569:73 [INFO] [stderr] | [INFO] [stderr] 569 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBlacksmithII)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:570:51 [INFO] [stderr] | [INFO] [stderr] 570 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBarracks)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:570:73 [INFO] [stderr] | [INFO] [stderr] 570 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildBarracks)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:571:51 [INFO] [stderr] | [INFO] [stderr] 571 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildArcheryRange)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:571:73 [INFO] [stderr] | [INFO] [stderr] 571 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::BuildArcheryRange)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:576:87 [INFO] [stderr] | [INFO] [stderr] 576 | if level < BANK_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeBank{level: level-1 }));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:576:109 [INFO] [stderr] | [INFO] [stderr] 576 | if level < BANK_UPGRADES as u32 + 1 {self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.1,0.1,0.1,0.9]), ButtonType::UpgradeBank{level: level-1 }));} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:580:52 [INFO] [stderr] | [INFO] [stderr] 580 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeGold{level: upgrades.gold_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:580:75 [INFO] [stderr] | [INFO] [stderr] 580 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeGold{level: upgrades.gold_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:583:52 [INFO] [stderr] | [INFO] [stderr] 583 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeIron{level: upgrades.iron_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:583:75 [INFO] [stderr] | [INFO] [stderr] 583 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeIron{level: upgrades.iron_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:586:52 [INFO] [stderr] | [INFO] [stderr] 586 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeCrystal{level: upgrades.crystal_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:586:75 [INFO] [stderr] | [INFO] [stderr] 586 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.3,1.0,0.3,0.9]), ButtonType::UpgradeCrystal{level: upgrades.crystal_upgrade as usize})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:591:51 [INFO] [stderr] | [INFO] [stderr] 591 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[BASIC_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:591:74 [INFO] [stderr] | [INFO] [stderr] 591 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[BASIC_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:594:51 [INFO] [stderr] | [INFO] [stderr] 594 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[AOE_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:594:74 [INFO] [stderr] | [INFO] [stderr] 594 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Attack, level: upgrades.tower_upgrades[AOE_TID][0] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:599:51 [INFO] [stderr] | [INFO] [stderr] 599 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[BASIC_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:599:74 [INFO] [stderr] | [INFO] [stderr] 599 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[BASIC_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:602:51 [INFO] [stderr] | [INFO] [stderr] 602 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[AOE_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:602:74 [INFO] [stderr] | [INFO] [stderr] 602 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[AOE_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:605:51 [INFO] [stderr] | [INFO] [stderr] 605 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: WALL_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[WALL_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:605:74 [INFO] [stderr] | [INFO] [stderr] 605 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: WALL_TID, kind: TowerAttribute::Defence, level: upgrades.tower_upgrades[WALL_TID][1] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:610:51 [INFO] [stderr] | [INFO] [stderr] 610 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[BASIC_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:610:74 [INFO] [stderr] | [INFO] [stderr] 610 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: BASIC_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[BASIC_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:613:51 [INFO] [stderr] | [INFO] [stderr] 613 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[AOE_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:613:74 [INFO] [stderr] | [INFO] [stderr] 613 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::OuterCircle, [0.5, 0.2,0.2,0.9]), ButtonType::UpgradeTower{tid: AOE_TID, kind: TowerAttribute::Range, level: upgrades.tower_upgrades[AOE_TID][2] as u32})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:618:48 [INFO] [stderr] | [INFO] [stderr] 618 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Sell)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:618:70 [INFO] [stderr] | [INFO] [stderr] 618 | self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 *self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Sell)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:620:54 [INFO] [stderr] | [INFO] [stderr] 620 | else { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Buy)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/map/land.rs:620:77 [INFO] [stderr] | [INFO] [stderr] 620 | else { self.buttons.push((JkmButton::new(0.0, 0.0, (2.0 * self.w / 3.0), (2.0 * self.h/ 3.0), JkmStyle::Rectangle, [0.0,0.0,0.3,0.8]) ,ButtonType::Buy)); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/aggressive_enemy.rs:50:79 [INFO] [stderr] | [INFO] [stderr] 50 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [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/defence/enemy/ghost_enemy.rs:49:79 [INFO] [stderr] | [INFO] [stderr] 49 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/ghost_boss.rs:67:80 [INFO] [stderr] | [INFO] [stderr] 67 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/troll.rs:57:80 [INFO] [stderr] | [INFO] [stderr] 57 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/mod.rs:95:79 [INFO] [stderr] | [INFO] [stderr] 95 | fn update(&mut self, dt: f64, spm: &JkmShortestPathMap, towers: &mut Vec> ) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/mod.rs:154:46 [INFO] [stderr] | [INFO] [stderr] 154 | fn attack_tower(&mut self, target: &mut Box, dt: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/enemy/mod.rs:256:45 [INFO] [stderr] | [INFO] [stderr] 256 | fn find_target(&mut self, towers: &Vec>, destination_x: f64, destination_y: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/basic_tower.rs:49:49 [INFO] [stderr] | [INFO] [stderr] 49 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:55:49 [INFO] [stderr] | [INFO] [stderr] 55 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: `...` range patterns are deprecated [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:8 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ help: use `..=` for an inclusive range [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/wall.rs:41:49 [INFO] [stderr] | [INFO] [stderr] 41 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/slow_tower.rs:49:49 [INFO] [stderr] | [INFO] [stderr] 49 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/rocket_tower.rs:54:49 [INFO] [stderr] | [INFO] [stderr] 54 | fn perform_attack(&self, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/mod.rs:76:54 [INFO] [stderr] | [INFO] [stderr] 76 | fn update(&mut self, dt: f64, enemies: &mut Vec>, upgrades: &GameState) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/tower/mod.rs:84:40 [INFO] [stderr] | [INFO] [stderr] 84 | fn perform_attack(&self, &mut Vec>, upgrades: &GameState,) -> Option ; [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/projectile.rs:75:59 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn update (&mut self, dt: f64, enemies: &mut Vec>) -> Option<(f64,f64,f64)> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/projectile.rs:110:41 [INFO] [stderr] | [INFO] [stderr] 110 | fn collide (&mut self, enemy: &mut Box) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:11:51 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn towers_with_rectangle(collection: &Vec>, x: f64, y: f64, w: f64, h: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:21:52 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn enemies_with_rectangle(collection: &Vec>, x: f64, y: f64, w: f64, h: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:31:59 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn find_all_enemies_in_rectangle(collection: &Vec>, x: f64, y: f64, w: f64, h: f64) -> Vec { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:43:61 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn find_closest_enemy(x: f64, y: f64, enemies: &Vec>) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:61:56 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn find_all_enemies_in_circle(collection: &Vec>, x: f64, y: f64, r: f64) -> Vec { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/collision.rs:75:50 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn enemies_with_segment(collection: &Vec>, x0: f64, y0: f64, s: f64, t: f64) -> Option { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:34:54 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn update(&mut self, dt: f64, vec: &mut Vec>) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:288:48 [INFO] [stderr] | [INFO] [stderr] 288 | fn basic_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:299:47 [INFO] [stderr] | [INFO] [stderr] 299 | fn slow_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:310:47 [INFO] [stderr] | [INFO] [stderr] 310 | fn fast_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:321:53 [INFO] [stderr] | [INFO] [stderr] 321 | fn aggressive_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:332:45 [INFO] [stderr] | [INFO] [stderr] 332 | fn alien_boss(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:337:45 [INFO] [stderr] | [INFO] [stderr] 337 | fn alien_gang(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:353:41 [INFO] [stderr] | [INFO] [stderr] 353 | fn devils(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:364:45 [INFO] [stderr] | [INFO] [stderr] 364 | fn devil_boss(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:368:45 [INFO] [stderr] | [INFO] [stderr] 368 | fn devil_gang(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:384:41 [INFO] [stderr] | [INFO] [stderr] 384 | fn ghosts(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:395:45 [INFO] [stderr] | [INFO] [stderr] 395 | fn ghost_boss(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:399:45 [INFO] [stderr] | [INFO] [stderr] 399 | fn ghost_gang(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:416:40 [INFO] [stderr] | [INFO] [stderr] 416 | fn troll(&mut self, vec: &mut Vec>, level: f64) { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:421:63 [INFO] [stderr] | [INFO] [stderr] 421 | fn troll_and_aggressive_enemies(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:438:44 [INFO] [stderr] | [INFO] [stderr] 438 | fn troll_mix(&mut self, vec: &mut Vec>, n: u32, t: f64, level: f64) -> bool { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/controller.rs:448:23 [INFO] [stderr] | [INFO] [stderr] 448 | let new_enemy: Box; [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:44:18 [INFO] [stderr] | [INFO] [stderr] 44 | towers: Vec>, [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | tower_templates: [Box;NUMBER_OF_TOWERS], [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:47:19 [INFO] [stderr] | [INFO] [stderr] 47 | enemies: Vec>, [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:66:24 [INFO] [stderr] | [INFO] [stderr] 66 | let enemies: Vec> = Vec::new(); [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Enemy` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:113:20 [INFO] [stderr] | [INFO] [stderr] 113 | let t_temp :[Box;NUMBER_OF_TOWERS] = [ [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/defence/mod.rs:360:23 [INFO] [stderr] | [INFO] [stderr] 360 | let new_tower : Box = [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Tower` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/lib.rs:185:116 [INFO] [stderr] | [INFO] [stderr] 185 | match self.defence.draw(g, c.transform.trans(self.eco_def_split_coordinate, self.header_height), c.draw_state, (self.screen_width - self.eco_def_split_coordinate), (self.screen_height-self.header_height), [self.mouse_x-self.eco_def_split_coordinate, self.mouse_y-self.header_height], &self.state) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/lib.rs:185:169 [INFO] [stderr] | [INFO] [stderr] 185 | match self.defence.draw(g, c.transform.trans(self.eco_def_split_coordinate, self.header_height), c.draw_state, (self.screen_width - self.eco_def_split_coordinate), (self.screen_height-self.header_height), [self.mouse_x-self.eco_def_split_coordinate, self.mouse_y-self.header_height], &self.state) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/map/mod.rs:15:52 [INFO] [stderr] | [INFO] [stderr] 15 | use definitions::{MapUserInteraction, DrawRequest, Drawable, GameState, Settings, Language}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/defence/mod.rs:13:19 [INFO] [stderr] | [INFO] [stderr] 13 | use definitions::{Drawable, DrawRequest, DefenceUserInteraction, GameState, Statistics, Settings}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:4 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(illegal_floating_point_literal_pattern)]` on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/map/mod.rs:138:7 [INFO] [stderr] | [INFO] [stderr] 138 | for mut l in self.land_matrix.iter_mut() { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/defence/tower/aoe_tower.rs:78:4 [INFO] [stderr] | [INFO] [stderr] 78 | 0.9 ... 1.0 => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.60s [INFO] running `"docker" "inspect" "ca8a30c67e9d8d04cff57ef6ae9cee486955a87c4d2badf81f1307d70b7ef431"` [INFO] running `"docker" "rm" "-f" "ca8a30c67e9d8d04cff57ef6ae9cee486955a87c4d2badf81f1307d70b7ef431"` [INFO] [stdout] ca8a30c67e9d8d04cff57ef6ae9cee486955a87c4d2badf81f1307d70b7ef431 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.38-1/worker-4/beta-2019-08-13:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/jakmeier/cheer-them-up:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+beta-2019-08-13" "test" "--frozen"` [INFO] [stdout] 816a7302bbbfe46a793a573aa0386022793aee85efed7d7647a05af82d5bb886 [INFO] running `"docker" "start" "-a" "816a7302bbbfe46a793a573aa0386022793aee85efed7d7647a05af82d5bb886"` [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.12s [INFO] [stderr] Running /opt/crater/target/debug/deps/cheer_them_up-1604e6b04121ac83 [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test defence::collision::segment_intersection_test ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/crater/target/debug/deps/cheer_them_up-57a982b3c0c152e4 [INFO] [stderr] Doc-tests cheer_them_up [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] running `"docker" "inspect" "816a7302bbbfe46a793a573aa0386022793aee85efed7d7647a05af82d5bb886"` [INFO] running `"docker" "rm" "-f" "816a7302bbbfe46a793a573aa0386022793aee85efed7d7647a05af82d5bb886"` [INFO] [stdout] 816a7302bbbfe46a793a573aa0386022793aee85efed7d7647a05af82d5bb886