[INFO] cloning repository https://github.com/jakmeier/cheer-them-up [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jakmeier/cheer-them-up" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjakmeier%2Fcheer-them-up"` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjakmeier%2Fcheer-them-up'... [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 50ffcf5972cc3f19969baa888c71ff1bf73568a5 [INFO] checking jakmeier/cheer-them-up against master#2748a9fd93dd1a00a4521f4f16de5befbf77f6cd for pr-62262-1 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjakmeier%2Fcheer-them-up" "/workspace/builds/worker-9/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-9/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/jakmeier/cheer-them-up on toolchain 2748a9fd93dd1a00a4521f4f16de5befbf77f6cd [INFO] running `"/workspace/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/jakmeier/cheer-them-up [INFO] finished tweaking git repo https://github.com/jakmeier/cheer-them-up [INFO] tweaked toml for git repo https://github.com/jakmeier/cheer-them-up written to /workspace/builds/worker-9/source/Cargo.toml [INFO] crate git repo https://github.com/jakmeier/cheer-them-up already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] error: the lock file /workspace/builds/worker-9/source/Cargo.lock needs to be updated but --locked was passed to prevent this [INFO] the lockfile is outdated, regenerating it [INFO] running `"/workspace/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] [stderr] Updating git repository `https://github.com/jakmeier/rusty-shortest-path-map` [INFO] running `"/workspace/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 236ed6ca530347fb11d0119aad8c9b17caf445dda2fb891b80366108c27d7cdc [INFO] running `"docker" "start" "-a" "236ed6ca530347fb11d0119aad8c9b17caf445dda2fb891b80366108c27d7cdc"` [INFO] [stderr] Compiling dtoa v0.4.4 [INFO] [stderr] Compiling bitflags v0.3.3 [INFO] [stderr] Checking piston-float v0.2.0 [INFO] [stderr] Checking lzw v0.9.0 [INFO] [stderr] Checking piston-texture v0.3.0 [INFO] [stderr] Checking piston-shaders_graphics2d v0.2.1 [INFO] [stderr] Checking find_folder v0.3.0 [INFO] [stderr] Checking jkm_shortest_path_map v1.2.1 (https://github.com/jakmeier/rusty-shortest-path-map#84ef66f8) [INFO] [stderr] Checking draw_state v0.3.0 [INFO] [stderr] Compiling freetype-sys v0.3.1 [INFO] [stderr] Compiling phf v0.7.24 [INFO] [stderr] Compiling wayland-scanner v0.5.11 [INFO] [stderr] Compiling rand_pcg v0.1.2 [INFO] [stderr] Compiling num-traits v0.2.8 [INFO] [stderr] Checking dylib v0.0.1 [INFO] [stderr] Checking shared_library v0.1.9 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Checking piston-viewport v0.2.0 [INFO] [stderr] Checking vecmath v0.2.0 [INFO] [stderr] Compiling xml-rs v0.2.2 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking cookie v0.2.5 [INFO] [stderr] Checking num-bigint v0.1.44 [INFO] [stderr] Checking tempfile v2.2.0 [INFO] [stderr] Checking gif v0.7.0 [INFO] [stderr] Checking x11-dl v2.3.1 [INFO] [stderr] Checking png v0.4.3 [INFO] [stderr] Checking osmesa-sys v0.0.5 [INFO] [stderr] Checking pistoncore-input v0.8.1 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Checking memmap v0.2.3 [INFO] [stderr] Checking hyper v0.9.18 [INFO] [stderr] Checking gfx_core v0.1.2 [INFO] [stderr] Checking jpeg-decoder v0.1.16 [INFO] [stderr] Checking piston2d-graphics v0.15.0 [INFO] [stderr] Checking freetype-rs v0.5.0 [INFO] [stderr] Compiling wayland-client v0.5.12 [INFO] [stderr] Compiling num-traits v0.1.43 [INFO] [stderr] Compiling serde_json v0.9.10 [INFO] [stderr] Compiling gl_generator v0.4.2 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking pistoncore-window v0.15.0 [INFO] [stderr] Checking pistoncore-event_loop v0.18.0 [INFO] [stderr] Compiling gfx_gl v0.3.1 [INFO] [stderr] Checking num v0.1.42 [INFO] [stderr] Checking image v0.7.2 [INFO] [stderr] Compiling phf_generator v0.7.24 [INFO] [stderr] Checking piston v0.18.0 [INFO] [stderr] Compiling phf_codegen v0.7.24 [INFO] [stderr] Compiling glutin v0.4.9 [INFO] [stderr] Compiling gl v0.5.2 [INFO] [stderr] Compiling target_build_utils v0.3.1 [INFO] [stderr] Checking gfx v0.9.1 [INFO] [stderr] Checking gfx_device_gl v0.8.2 [INFO] [stderr] Checking piston-gfx_texture v0.10.0 [INFO] [stderr] Compiling libloading v0.3.4 [INFO] [stderr] Checking piston2d-gfx_graphics v0.23.1 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.5.11 [INFO] [stderr] Checking wayland-window v0.2.3 [INFO] [stderr] Checking wayland-kbd v0.3.6 [INFO] [stderr] Checking pistoncore-glutin_window v0.21.0 [INFO] [stderr] Checking piston_window v0.38.0 [INFO] [stderr] Checking cheer_them_up_game v1.0.1 (/opt/rustwide/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: 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: 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: 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] 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 10s [INFO] running `"docker" "inspect" "236ed6ca530347fb11d0119aad8c9b17caf445dda2fb891b80366108c27d7cdc"` [INFO] running `"docker" "rm" "-f" "236ed6ca530347fb11d0119aad8c9b17caf445dda2fb891b80366108c27d7cdc"` [INFO] [stdout] 236ed6ca530347fb11d0119aad8c9b17caf445dda2fb891b80366108c27d7cdc