[INFO] cloning repository https://github.com/RasmusBruhn/hex_plant_simulator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/RasmusBruhn/hex_plant_simulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRasmusBruhn%2Fhex_plant_simulator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRasmusBruhn%2Fhex_plant_simulator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 29ecd363aac5c2a6cba36dee4a4ba81496d231f4
[INFO] checking RasmusBruhn/hex_plant_simulator against master#59fd4ef94daa991e6797b5aa6127e824f3067def for pr-145108-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRasmusBruhn%2Fhex_plant_simulator" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/RasmusBruhn/hex_plant_simulator
[INFO] finished tweaking git repo https://github.com/RasmusBruhn/hex_plant_simulator
[INFO] tweaked toml for git repo https://github.com/RasmusBruhn/hex_plant_simulator written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/RasmusBruhn/hex_plant_simulator on toolchain 59fd4ef94daa991e6797b5aa6127e824f3067def
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/RasmusBruhn/hex_plant_simulator already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fdc9b4d6fecf237f14497b60af9a1e3be9c68a7099bacebdd4c11cd9ecda18b2
[INFO] running `Command { std: "docker" "start" "-a" "fdc9b4d6fecf237f14497b60af9a1e3be9c68a7099bacebdd4c11cd9ecda18b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fdc9b4d6fecf237f14497b60af9a1e3be9c68a7099bacebdd4c11cd9ecda18b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fdc9b4d6fecf237f14497b60af9a1e3be9c68a7099bacebdd4c11cd9ecda18b2", kill_on_drop: false }`
[INFO] [stdout] fdc9b4d6fecf237f14497b60af9a1e3be9c68a7099bacebdd4c11cd9ecda18b2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1ee3691e3bb5c7cdec074e60b13501511ad4b6c215fe188e16921539c3cae277
[INFO] running `Command { std: "docker" "start" "-a" "1ee3691e3bb5c7cdec074e60b13501511ad4b6c215fe188e16921539c3cae277", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling unicode-ident v1.0.20
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling cc v1.2.43
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]    Compiling naga v27.0.3
[INFO] [stderr]     Checking hashbrown v0.16.0
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking codespan-reporting v0.12.0
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]     Checking indexmap v2.12.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling wgpu-hal v27.0.4
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking ash v0.38.0+1.3.281
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]    Compiling wgpu-core v27.0.3
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]    Compiling winit v0.30.12
[INFO] [stderr]    Compiling wgpu v27.0.1
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking jiff v0.2.15
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.27
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking wgpu-types v27.0.1
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking env_filter v0.1.4
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.9
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking wgpu-core-deps-windows-linux-android v27.0.0
[INFO] [stderr]     Checking plant_growth_simulation v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: method `get_mut` is never used
[INFO] [stdout]   --> src/map/tile/neighbor.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl<'a> TileNeighbors<'a> {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn get_mut(&mut self, direction: &NeighborDirection) -> &mut Neighbor<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `direction` is never used
[INFO] [stdout]    --> src/map/tile/neighbor.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl TilePos {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn direction(&self, size: &types::ISize, direction: &NeighborDirection) -> TilePosNeighbor {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `count` is never used
[INFO] [stdout]   --> src/map/tile/simulation/plant/bridge/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl BridgeSet {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `neighbor_dir_to_id` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:225:4
[INFO] [stdout]     |
[INFO] [stdout] 225 | fn neighbor_dir_to_id(dir: &NeighborDirection) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `id_to_neighbor_dir` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn id_to_neighbor_dir(id: usize) -> NeighborDirection {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `float_to_id` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:257:4
[INFO] [stdout]     |
[INFO] [stdout] 257 | fn float_to_id(value: f64) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `id_to_float` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:266:4
[INFO] [stdout]     |
[INFO] [stdout] 266 | fn id_to_float(value: usize) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transfer_mode_to_id` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:275:4
[INFO] [stdout]     |
[INFO] [stdout] 275 | fn transfer_mode_to_id(mode: &TransferMode) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/arithmetic.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Arithmetic {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout]  9 |     /// Always has the value 0.0
[INFO] [stdout] 10 |     Zero,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 11 |     /// Always has the value 1.0
[INFO] [stdout] 12 |     One,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 13 |     /// Always a constant value
[INFO] [stdout] 14 |     Constant(f64),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 15 |     /// Doubles the value
[INFO] [stdout] 16 |     Double(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 17 |     /// Halfs the value
[INFO] [stdout] 18 |     Half(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 19 |     /// Increments the value by 1
[INFO] [stdout] 20 |     Increment(usize),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     /// Decrements the value by 1
[INFO] [stdout] 22 |     Decrement(usize),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 23 |     /// Adds to values
[INFO] [stdout] 24 |     Add(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 25 |     /// Subtracts two values
[INFO] [stdout] 26 |     Sub(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 27 |     /// Multiplies two values
[INFO] [stdout] 28 |     Mul(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 29 |     /// Divides two values
[INFO] [stdout] 30 |     Div(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 31 |     /// Applies modulus operator between two values
[INFO] [stdout] 32 |     Mod(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 33 |     /// Negates a value
[INFO] [stdout] 34 |     Neg(usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 35 |     /// Finds the minimum of two values
[INFO] [stdout] 36 |     Min(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 37 |     /// Finds the minimum of a value and zero
[INFO] [stdout] 38 |     MinZero(usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 39 |     /// Finds the minimum of a value and one
[INFO] [stdout] 40 |     MinOne(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 41 |     /// Finds the maximum of two values
[INFO] [stdout] 42 |     Max(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 43 |     /// Finds the maximum of a value and zero
[INFO] [stdout] 44 |     MaxZero(usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 45 |     /// Finds the maximum of a value and one
[INFO] [stdout] 46 |     MaxOne(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     /// Calculates the mean of two values
[INFO] [stdout] 48 |     Mean(usize, usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     /// Gets the light value of this tile
[INFO] [stdout] 50 |     TileLight,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 51 |     /// Gets the gradient of the light in the specified direction
[INFO] [stdout] 52 |     TileLightGradient(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     /// Gets the transparency of this til
[INFO] [stdout] 54 |     TileTransparency,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     /// Gets the gradient of the transparency in the specified direction
[INFO] [stdout] 56 |     TileTransparencyGradient(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     /// A unique id for the type of the the the neighbor tile
[INFO] [stdout] 58 |     TilePlantType(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 59 |     /// A unique id for the bridge in the direction
[INFO] [stdout] 60 |     BridgeType(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 61 |     /// A unique id for the type of plant in this tile
[INFO] [stdout] 62 |     PlantType,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 63 |     /// Gets the age of the plant tile
[INFO] [stdout] 64 |     PlantAge,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 65 |     /// Gets the cumulative age of the plant
[INFO] [stdout] 66 |     PlantCumAge,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 67 |     /// Gets the energy capacity of the plant tile
[INFO] [stdout] 68 |     PlantEnergyCapacity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     /// Gets the energy reserve of the plant tile
[INFO] [stdout] 70 |     PlantEnergyReserve,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     /// Gets the energy stored in the plant tile
[INFO] [stdout] 72 |     PlantEnergy,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 73 |     /// Gets the change in energy of the plant tile since last simulation step
[INFO] [stdout] 74 |     PlantEnergyChange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     /// Gets the energy of the plant tile reserved for itself
[INFO] [stdout] 76 |     PlantEnergySelf,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     /// Gets the change in the self energy of the plant tile since last simulation step
[INFO] [stdout] 78 |     PlantEnergySelfChange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     /// Gets the energy allocated for sharing with each neighbor ((energy - energy_self) / 6.0)
[INFO] [stdout] 80 |     PlantEnergyShare,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     /// Gets the change in shared energy since the last simulation step
[INFO] [stdout] 82 |     PlantEnergyShareChange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Arithmetic` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/arithmetic.rs:87:15
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl Arithmetic {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  86 |     /// The number of different arithmetic operators
[INFO] [stdout]  87 |     pub const COUNT: usize = 37;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn get_indices(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn from_id(id: usize, indices: (usize, usize)) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/logic.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Logic {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout]  8 |     /// Always false
[INFO] [stdout]  9 |     False,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 10 |     /// Always true
[INFO] [stdout] 11 |     True,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 12 |     /// Applies and operator between two logic operations
[INFO] [stdout] 13 |     And(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 14 |     /// Applies or operator between two logic operators
[INFO] [stdout] 15 |     Or(usize, usize),
[INFO] [stdout]    |     ^^
[INFO] [stdout] 16 |     /// Applies xor operator between two logic operators
[INFO] [stdout] 17 |     Xor(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 18 |     /// Applies not operator on a logic operator
[INFO] [stdout] 19 |     Not(usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 20 |     /// Checks if two arithmetic operators are equal
[INFO] [stdout] 21 |     Equal(usize, usize),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 22 |     /// Checks if two arithmetic operators are qual when rounded to integers
[INFO] [stdout] 23 |     EqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 24 |     /// Checks if two arithmetic operators are not equal
[INFO] [stdout] 25 |     NotEqual(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     /// Checks if two arithmetic operators are not equal when rounded to integers
[INFO] [stdout] 27 |     NotEqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 28 |     /// Checks if one arithmetic operator is greater than another arithmetic operator
[INFO] [stdout] 29 |     Greater(usize, usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 30 |     /// Checks if one arithmetic operator is greater than another arithmetic operator when rounded to integers
[INFO] [stdout] 31 |     GreaterRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 32 |     /// Checks if one arithmetic operator is greater than or equal another arithmetic operator
[INFO] [stdout] 33 |     GreaterOrEqual(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     /// Checks if one arithmetic operator is greater than or equal another arithmetic operator when rounded to integers
[INFO] [stdout] 35 |     GreaterOrEqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     /// Checks if one arithmetic operator is less than another arithmetic operator
[INFO] [stdout] 37 |     Less(usize, usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 38 |     /// Checks if one arithmetic operator is less than another arithmetic operator when rounded to integers
[INFO] [stdout] 39 |     LessRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 40 |     /// Checks if one arithmetic operator is less than or equal another arithmetic operator
[INFO] [stdout] 41 |     LessOrEqual(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 42 |     /// Checks if one arithmetic operator is less than or equal another arithmetic operator when rounded to integers
[INFO] [stdout] 43 |     LessOrEqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     /// Checks if a arithmetic operator is positive
[INFO] [stdout] 45 |     IsPositive(usize),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 46 |     /// Checks if a arithmetic operator is positive when rounded to an integer
[INFO] [stdout] 47 |     IsPositiveRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     /// Checks if a arithmetic operator is positive or zero
[INFO] [stdout] 49 |     IsNotNegative(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 50 |     /// Checks if a arithmetic operator is positive or zero when rounded to an integer
[INFO] [stdout] 51 |     IsNotNegativeRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     /// Checks if a arithmetic operator is zero
[INFO] [stdout] 53 |     IsZero(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 54 |     /// Checks if a arithmetic operator is zero when rounded to an integer
[INFO] [stdout] 55 |     IsZeroRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 56 |     /// Checks if a arithmetic operator is negative or zero
[INFO] [stdout] 57 |     IsNotPositive(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Checks if a arithmetic operator is negative or zero when rounded to an integer
[INFO] [stdout] 59 |     IsNotPositiveRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Checks if a arithmetic operator is negative
[INFO] [stdout] 61 |     IsNegative(usize),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 62 |     /// Checks if a arithmetic operator is negative when rounded to an integer
[INFO] [stdout] 63 |     IsNegativeRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// True if the tile in the specified direction is available for spreading
[INFO] [stdout] 65 |     TileFree(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Logic` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/logic.rs:70:15
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl Logic {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  69 |     /// The number of different logic operators
[INFO] [stdout]  70 |     pub const COUNT: usize = 29;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_indices(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn from_id(id: usize, indices: (usize, usize)) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/action.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Action {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout]  8 |     /// Do nothing
[INFO] [stdout]  9 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 10 |     /// If .0 is true then runs action .1
[INFO] [stdout] 11 |     If(usize, usize),
[INFO] [stdout]    |     ^^
[INFO] [stdout] 12 |     /// If .0 is true then runs action .1 otherwise runs action .2
[INFO] [stdout] 13 |     IfElse(usize, usize, usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 14 |     /// Runs action .0 and then action .1
[INFO] [stdout] 15 |     Both(usize, usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     /// Kills the plant
[INFO] [stdout] 17 |     Kill,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Spread(usize, usize, NeighborDirection),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Grow,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/action.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Action {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 27 |     /// The number of different action operators
[INFO] [stdout] 28 |     pub const COUNT: usize = 7;
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_indices(&self) -> (usize, usize, usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn from_id(id: usize, indices: (usize, usize, usize)) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Seed`, `SugarBulb`, `Log`, and `Leaf` are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/spread_bulk.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub enum SpreadBulkType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 83 |     /// Produces a new seed
[INFO] [stdout] 84 |     Seed,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 85 |     /// Produces a new sugar bulb
[INFO] [stdout] 86 |     SugarBulb,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 87 |     /// Produces a new log
[INFO] [stdout] 88 |     Log,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Leaf(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadBulkType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/spread_bulk.rs:96:15
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl SpreadBulkType {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  95 |     /// The number of different plant types
[INFO] [stdout]  96 |     pub const COUNT: usize = 4;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_indices(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn from_id(id: usize, indices: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Log` and `Branch` are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/spread_bridge.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub enum SpreadBridgeType {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 54 |     /// Produces a new log
[INFO] [stdout] 55 |     Log,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 56 |     /// Produces a new branch
[INFO] [stdout] 57 |     Branch,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadBridgeType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, and `from_id` are never used
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/spread_bridge.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl SpreadBridgeType {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 61 |     /// The number of different plant types
[INFO] [stdout] 62 |     pub const COUNT: usize = 2;
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn from_id(id: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:258:21
[INFO] [stdout]     |
[INFO] [stdout] 258 |     return unsafe { transmute(value) };
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] help: replace this with
[INFO] [stdout]     |
[INFO] [stdout] 258 -     return unsafe { transmute(value) };
[INFO] [stdout] 258 +     return unsafe { f64::to_bits(value) as usize };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:267:21
[INFO] [stdout]     |
[INFO] [stdout] 267 |     return unsafe { transmute(value) };
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace this with
[INFO] [stdout]     |
[INFO] [stdout] 267 -     return unsafe { transmute(value) };
[INFO] [stdout] 267 +     return unsafe { f64::from_bits(value as _) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mut` is never used
[INFO] [stdout]   --> src/map/tile/neighbor.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl<'a> TileNeighbors<'a> {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn get_mut(&mut self, direction: &NeighborDirection) -> &mut Neighbor<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `direction` is never used
[INFO] [stdout]    --> src/map/tile/neighbor.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl TilePos {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn direction(&self, size: &types::ISize, direction: &NeighborDirection) -> TilePosNeighbor {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `count` is never used
[INFO] [stdout]   --> src/map/tile/simulation/plant/bridge/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl BridgeSet {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `neighbor_dir_to_id` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:225:4
[INFO] [stdout]     |
[INFO] [stdout] 225 | fn neighbor_dir_to_id(dir: &NeighborDirection) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `id_to_neighbor_dir` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn id_to_neighbor_dir(id: usize) -> NeighborDirection {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `float_to_id` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:257:4
[INFO] [stdout]     |
[INFO] [stdout] 257 | fn float_to_id(value: f64) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `id_to_float` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:266:4
[INFO] [stdout]     |
[INFO] [stdout] 266 | fn id_to_float(value: usize) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transfer_mode_to_id` is never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:275:4
[INFO] [stdout]     |
[INFO] [stdout] 275 | fn transfer_mode_to_id(mode: &TransferMode) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/arithmetic.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Arithmetic {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout]  9 |     /// Always has the value 0.0
[INFO] [stdout] 10 |     Zero,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 11 |     /// Always has the value 1.0
[INFO] [stdout] 12 |     One,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 13 |     /// Always a constant value
[INFO] [stdout] 14 |     Constant(f64),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 15 |     /// Doubles the value
[INFO] [stdout] 16 |     Double(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 17 |     /// Halfs the value
[INFO] [stdout] 18 |     Half(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 19 |     /// Increments the value by 1
[INFO] [stdout] 20 |     Increment(usize),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     /// Decrements the value by 1
[INFO] [stdout] 22 |     Decrement(usize),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 23 |     /// Adds to values
[INFO] [stdout] 24 |     Add(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 25 |     /// Subtracts two values
[INFO] [stdout] 26 |     Sub(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 27 |     /// Multiplies two values
[INFO] [stdout] 28 |     Mul(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 29 |     /// Divides two values
[INFO] [stdout] 30 |     Div(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 31 |     /// Applies modulus operator between two values
[INFO] [stdout] 32 |     Mod(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 33 |     /// Negates a value
[INFO] [stdout] 34 |     Neg(usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 35 |     /// Finds the minimum of two values
[INFO] [stdout] 36 |     Min(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 37 |     /// Finds the minimum of a value and zero
[INFO] [stdout] 38 |     MinZero(usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 39 |     /// Finds the minimum of a value and one
[INFO] [stdout] 40 |     MinOne(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 41 |     /// Finds the maximum of two values
[INFO] [stdout] 42 |     Max(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 43 |     /// Finds the maximum of a value and zero
[INFO] [stdout] 44 |     MaxZero(usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 45 |     /// Finds the maximum of a value and one
[INFO] [stdout] 46 |     MaxOne(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     /// Calculates the mean of two values
[INFO] [stdout] 48 |     Mean(usize, usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     /// Gets the light value of this tile
[INFO] [stdout] 50 |     TileLight,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 51 |     /// Gets the gradient of the light in the specified direction
[INFO] [stdout] 52 |     TileLightGradient(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     /// Gets the transparency of this til
[INFO] [stdout] 54 |     TileTransparency,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     /// Gets the gradient of the transparency in the specified direction
[INFO] [stdout] 56 |     TileTransparencyGradient(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     /// A unique id for the type of the the the neighbor tile
[INFO] [stdout] 58 |     TilePlantType(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 59 |     /// A unique id for the bridge in the direction
[INFO] [stdout] 60 |     BridgeType(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 61 |     /// A unique id for the type of plant in this tile
[INFO] [stdout] 62 |     PlantType,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 63 |     /// Gets the age of the plant tile
[INFO] [stdout] 64 |     PlantAge,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 65 |     /// Gets the cumulative age of the plant
[INFO] [stdout] 66 |     PlantCumAge,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 67 |     /// Gets the energy capacity of the plant tile
[INFO] [stdout] 68 |     PlantEnergyCapacity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     /// Gets the energy reserve of the plant tile
[INFO] [stdout] 70 |     PlantEnergyReserve,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     /// Gets the energy stored in the plant tile
[INFO] [stdout] 72 |     PlantEnergy,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 73 |     /// Gets the change in energy of the plant tile since last simulation step
[INFO] [stdout] 74 |     PlantEnergyChange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     /// Gets the energy of the plant tile reserved for itself
[INFO] [stdout] 76 |     PlantEnergySelf,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     /// Gets the change in the self energy of the plant tile since last simulation step
[INFO] [stdout] 78 |     PlantEnergySelfChange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     /// Gets the energy allocated for sharing with each neighbor ((energy - energy_self) / 6.0)
[INFO] [stdout] 80 |     PlantEnergyShare,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     /// Gets the change in shared energy since the last simulation step
[INFO] [stdout] 82 |     PlantEnergyShareChange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Arithmetic` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/arithmetic.rs:87:15
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl Arithmetic {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  86 |     /// The number of different arithmetic operators
[INFO] [stdout]  87 |     pub const COUNT: usize = 37;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn get_indices(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn from_id(id: usize, indices: (usize, usize)) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/logic.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Logic {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout]  8 |     /// Always false
[INFO] [stdout]  9 |     False,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 10 |     /// Always true
[INFO] [stdout] 11 |     True,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 12 |     /// Applies and operator between two logic operations
[INFO] [stdout] 13 |     And(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 14 |     /// Applies or operator between two logic operators
[INFO] [stdout] 15 |     Or(usize, usize),
[INFO] [stdout]    |     ^^
[INFO] [stdout] 16 |     /// Applies xor operator between two logic operators
[INFO] [stdout] 17 |     Xor(usize, usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 18 |     /// Applies not operator on a logic operator
[INFO] [stdout] 19 |     Not(usize),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 20 |     /// Checks if two arithmetic operators are equal
[INFO] [stdout] 21 |     Equal(usize, usize),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 22 |     /// Checks if two arithmetic operators are qual when rounded to integers
[INFO] [stdout] 23 |     EqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 24 |     /// Checks if two arithmetic operators are not equal
[INFO] [stdout] 25 |     NotEqual(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     /// Checks if two arithmetic operators are not equal when rounded to integers
[INFO] [stdout] 27 |     NotEqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 28 |     /// Checks if one arithmetic operator is greater than another arithmetic operator
[INFO] [stdout] 29 |     Greater(usize, usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 30 |     /// Checks if one arithmetic operator is greater than another arithmetic operator when rounded to integers
[INFO] [stdout] 31 |     GreaterRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 32 |     /// Checks if one arithmetic operator is greater than or equal another arithmetic operator
[INFO] [stdout] 33 |     GreaterOrEqual(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     /// Checks if one arithmetic operator is greater than or equal another arithmetic operator when rounded to integers
[INFO] [stdout] 35 |     GreaterOrEqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     /// Checks if one arithmetic operator is less than another arithmetic operator
[INFO] [stdout] 37 |     Less(usize, usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 38 |     /// Checks if one arithmetic operator is less than another arithmetic operator when rounded to integers
[INFO] [stdout] 39 |     LessRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 40 |     /// Checks if one arithmetic operator is less than or equal another arithmetic operator
[INFO] [stdout] 41 |     LessOrEqual(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 42 |     /// Checks if one arithmetic operator is less than or equal another arithmetic operator when rounded to integers
[INFO] [stdout] 43 |     LessOrEqualRound(usize, usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     /// Checks if a arithmetic operator is positive
[INFO] [stdout] 45 |     IsPositive(usize),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 46 |     /// Checks if a arithmetic operator is positive when rounded to an integer
[INFO] [stdout] 47 |     IsPositiveRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     /// Checks if a arithmetic operator is positive or zero
[INFO] [stdout] 49 |     IsNotNegative(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 50 |     /// Checks if a arithmetic operator is positive or zero when rounded to an integer
[INFO] [stdout] 51 |     IsNotNegativeRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     /// Checks if a arithmetic operator is zero
[INFO] [stdout] 53 |     IsZero(usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 54 |     /// Checks if a arithmetic operator is zero when rounded to an integer
[INFO] [stdout] 55 |     IsZeroRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 56 |     /// Checks if a arithmetic operator is negative or zero
[INFO] [stdout] 57 |     IsNotPositive(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// Checks if a arithmetic operator is negative or zero when rounded to an integer
[INFO] [stdout] 59 |     IsNotPositiveRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Checks if a arithmetic operator is negative
[INFO] [stdout] 61 |     IsNegative(usize),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 62 |     /// Checks if a arithmetic operator is negative when rounded to an integer
[INFO] [stdout] 63 |     IsNegativeRound(usize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// True if the tile in the specified direction is available for spreading
[INFO] [stdout] 65 |     TileFree(NeighborDirection),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Logic` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/logic.rs:70:15
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl Logic {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  69 |     /// The number of different logic operators
[INFO] [stdout]  70 |     pub const COUNT: usize = 29;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_indices(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn from_id(id: usize, indices: (usize, usize)) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/action.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Action {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout]  8 |     /// Do nothing
[INFO] [stdout]  9 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 10 |     /// If .0 is true then runs action .1
[INFO] [stdout] 11 |     If(usize, usize),
[INFO] [stdout]    |     ^^
[INFO] [stdout] 12 |     /// If .0 is true then runs action .1 otherwise runs action .2
[INFO] [stdout] 13 |     IfElse(usize, usize, usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 14 |     /// Runs action .0 and then action .1
[INFO] [stdout] 15 |     Both(usize, usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     /// Kills the plant
[INFO] [stdout] 17 |     Kill,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Spread(usize, usize, NeighborDirection),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Grow,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/action.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Action {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 27 |     /// The number of different action operators
[INFO] [stdout] 28 |     pub const COUNT: usize = 7;
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_indices(&self) -> (usize, usize, usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn from_id(id: usize, indices: (usize, usize, usize)) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Seed`, `SugarBulb`, `Log`, and `Leaf` are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/spread_bulk.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub enum SpreadBulkType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 83 |     /// Produces a new seed
[INFO] [stdout] 84 |     Seed,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 85 |     /// Produces a new sugar bulb
[INFO] [stdout] 86 |     SugarBulb,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 87 |     /// Produces a new log
[INFO] [stdout] 88 |     Log,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Leaf(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadBulkType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, `get_indices`, and `from_id` are never used
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/spread_bulk.rs:96:15
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl SpreadBulkType {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  95 |     /// The number of different plant types
[INFO] [stdout]  96 |     pub const COUNT: usize = 4;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_indices(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn from_id(id: usize, indices: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Log` and `Branch` are never constructed
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/spread_bridge.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub enum SpreadBridgeType {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 54 |     /// Produces a new log
[INFO] [stdout] 55 |     Log,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 56 |     /// Produces a new branch
[INFO] [stdout] 57 |     Branch,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadBridgeType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `COUNT`, `get_id`, and `from_id` are never used
[INFO] [stdout]   --> src/map/tile/simulation/plant/program/spread_bridge.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl SpreadBridgeType {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 61 |     /// The number of different plant types
[INFO] [stdout] 62 |     pub const COUNT: usize = 2;
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_id(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn from_id(id: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:258:21
[INFO] [stdout]     |
[INFO] [stdout] 258 |     return unsafe { transmute(value) };
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] help: replace this with
[INFO] [stdout]     |
[INFO] [stdout] 258 -     return unsafe { transmute(value) };
[INFO] [stdout] 258 +     return unsafe { f64::to_bits(value) as usize };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]    --> src/map/tile/simulation/plant/program/mod.rs:267:21
[INFO] [stdout]     |
[INFO] [stdout] 267 |     return unsafe { transmute(value) };
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace this with
[INFO] [stdout]     |
[INFO] [stdout] 267 -     return unsafe { transmute(value) };
[INFO] [stdout] 267 +     return unsafe { f64::from_bits(value as _) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "1ee3691e3bb5c7cdec074e60b13501511ad4b6c215fe188e16921539c3cae277", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1ee3691e3bb5c7cdec074e60b13501511ad4b6c215fe188e16921539c3cae277", kill_on_drop: false }`
[INFO] [stdout] 1ee3691e3bb5c7cdec074e60b13501511ad4b6c215fe188e16921539c3cae277
