[INFO] cloning repository https://github.com/Jandhi/Tome
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Jandhi/Tome" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJandhi%2FTome", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJandhi%2FTome'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e83266a673125455e15b5347e460cfec231a5eaa
[INFO] building Jandhi/Tome against try#d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6 for pr-146237-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJandhi%2FTome" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Jandhi/Tome
[INFO] finished tweaking git repo https://github.com/Jandhi/Tome
[INFO] tweaked toml for git repo https://github.com/Jandhi/Tome written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Jandhi/Tome on toolchain d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Jandhi/Tome 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" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] aa86ba62e056d4a835a55463d07ae8d12e9c728c762c22a829bbb02178925c87
[INFO] running `Command { std: "docker" "start" "-a" "aa86ba62e056d4a835a55463d07ae8d12e9c728c762c22a829bbb02178925c87", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "aa86ba62e056d4a835a55463d07ae8d12e9c728c762c22a829bbb02178925c87", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa86ba62e056d4a835a55463d07ae8d12e9c728c762c22a829bbb02178925c87", kill_on_drop: false }`
[INFO] [stdout] aa86ba62e056d4a835a55463d07ae8d12e9c728c762c22a829bbb02178925c87
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d7636a0e7710ae3287711677cfa7bcaafa81e3c3fd53ba2e586bf8631e798b3b
[INFO] running `Command { std: "docker" "start" "-a" "d7636a0e7710ae3287711677cfa7bcaafa81e3c3fd53ba2e586bf8631e798b3b", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling cc v1.2.24
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling openssl v0.10.72
[INFO] [stderr]    Compiling hashbrown v0.15.3
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling eventsource-stream v0.2.3
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling futures-timer v3.0.3
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling miniz_oxide v0.8.8
[INFO] [stderr]    Compiling rand_xorshift v0.3.0
[INFO] [stderr]    Compiling dyn-clone v1.0.19
[INFO] [stderr]    Compiling cesu8 v1.1.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling lerp v0.5.0
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling strum v0.27.1
[INFO] [stderr]    Compiling dotenv v0.15.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling flate2 v1.1.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]    Compiling retry-policies v0.4.0
[INFO] [stderr]    Compiling noise v0.9.0
[INFO] [stderr]    Compiling openssl-sys v0.9.108
[INFO] [stderr]    Compiling simple_logger v5.0.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling strum_macros v0.27.1
[INFO] [stderr]    Compiling tokio v1.45.1
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling zerovec v0.11.2
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling potential_utf v0.1.2
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling derive_builder v0.20.2
[INFO] [stderr]    Compiling tokio-util v0.7.15
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling h2 v0.4.10
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_bytes v0.11.17
[INFO] [stderr]    Compiling fastsnbt v0.2.0
[INFO] [stderr]    Compiling fastnbt v2.5.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]    Compiling hyper v1.6.0
[INFO] [stderr]    Compiling hyper-util v0.1.12
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.15
[INFO] [stderr]    Compiling reqwest-eventsource v0.6.0
[INFO] [stderr]    Compiling reqwest-middleware v0.4.2
[INFO] [stderr]    Compiling openai v1.1.1
[INFO] [stderr]    Compiling reqwest-retry v0.7.0
[INFO] [stderr]    Compiling Tome v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/geometry/functions.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashSet, hash::Hash};
[INFO] [stdout]   |                                 ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/geometry/functions.rs:20:55
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get_outer_points(points: &HashSet<Point2D>) -> (HashSet<Point2D>) {
[INFO] [stdout]    |                                                       ^                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 20 - pub fn get_outer_points(points: &HashSet<Point2D>) -> (HashSet<Point2D>) {
[INFO] [stdout] 20 + pub fn get_outer_points(points: &HashSet<Point2D>) -> HashSet<Point2D> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/minecraft/color.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `block`
[INFO] [stdout]  --> src/minecraft/color.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::minecraft::{block, BlockID};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fastnbt::Value`
[INFO] [stdout]  --> src/http_mod/provider.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use fastnbt::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/generator/districts/merge.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::editor::{self, Editor, World};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `env`
[INFO] [stdout]  --> src/generator/districts/wall.rs:1:44
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::{HashMap, HashSet}, env, hash::Hash};
[INFO] [stdout]   |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/generator/districts/wall.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockID`, `Block`, `EAST_2D`, `NORTH_2D`, `Seed`, `buildings::walls::Wall`, `editor::World`, and `wall`
[INFO] [stdout]  --> src/generator/districts/wall.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...::{editor::World, generator::{buildings::walls::Wall, districts::{build_wall_gate, wall}, materials::{MaterialId, Placer}, nbts::{place_structure, Structure, StructureId}, BuildClaim}, geometry::{get_neighbours_in_set, get_outer_points, is_point_surrounded_by_points, is_straight_point2d, Cardinal, Point2D, Point3D, CARDINALS_2D, EAST_2D, NORTH_2D}, minecraft::{Block, BlockForm, BlockID}, noise::{Seed, R...
[INFO] [stdout]   |       ^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^^^^^                               ^^^^                                                                                                                                                                                                                                                    ^^^^^^^  ^^^^^^^^               ^^^^^             ^^^^^^^           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/generator/districts/wall.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | ) -> (HashSet<Point2D>) {
[INFO] [stdout]    |      ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 24 - ) -> (HashSet<Point2D>) {
[INFO] [stdout] 24 + ) -> HashSet<Point2D> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/generator/districts/wall.rs:272:16
[INFO] [stdout]     |
[INFO] [stdout] 272 |             if (i == 0 || i == enhanced_wall_points.len() - 1 
[INFO] [stdout]     |                ^
[INFO] [stdout] ...
[INFO] [stdout] 276 |                 || point.y > enhanced_wall_points[i - 1].0.y + 4) {  
[INFO] [stdout]     |                                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 272 ~             if i == 0 || i == enhanced_wall_points.len() - 1 
[INFO] [stdout] 273 |                 || enhanced_wall_points[i + 1].2 == WallType::Water
[INFO] [stdout] 274 |                 || enhanced_wall_points[i - 1].2 == WallType::Water
[INFO] [stdout] 275 |                 || point.y > enhanced_wall_points[i + 1].0.y + 4
[INFO] [stdout] 276 ~                 || point.y > enhanced_wall_points[i - 1].0.y + 4 {  
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `World`
[INFO] [stdout]  --> src/generator/districts/district_painter.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{editor::{World, Editor}, generator::BuildClaim, geometry::{Point2D, Point3D, CARDINALS_2D, cardinal_to_str}, minecraft::{Bloc...
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/generator/districts/gate.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use log::{info, warn};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/generator/materials/gradient.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rect3D` and `generator::materials::feature::MaterialParameters`
[INFO] [stdout]  --> src/generator/materials/gradient.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{generator::materials::feature::MaterialParameters, geometry::{Point3D, Rect3D}, noise::Seed};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strum::IntoEnumIterator`
[INFO] [stdout]  --> src/generator/materials/palette.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use strum::IntoEnumIterator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strum_macros::EnumIter`
[INFO] [stdout]  --> src/generator/materials/role.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use strum_macros::EnumIter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockForm`, `BlockID`, and `Block`
[INFO] [stdout]  --> src/generator/terrain/forest.rs:5:40
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{data::Loadable,minecraft::{Block, BlockForm, BlockID}, generator::terrain::Tree};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `data::Loadable` and `generator::materials::MaterialId`
[INFO] [stdout]  --> src/generator/terrain/tree.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{data::Loadable, editor::Editor, generator::materials::MaterialId, geometry::Point3D, noise::{RNG, Seed}, minecraft::{string_t...
[INFO] [stdout]   |             ^^^^^^^^^^^^^^                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/generator/terrain/tree_cutter.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::{HashMap, HashSet}, hash::Hash};
[INFO] [stdout]   |                         ^^^^^^^            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/generator/terrain/tree_cutter.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RNG` and `Seed`
[INFO] [stdout]  --> src/generator/terrain/tree_cutter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     noise::{RNG, Seed},
[INFO] [stdout]   |             ^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `collections::HashMap`
[INFO] [stdout]  --> src/generator/nbts/place.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io::Read};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MaterialId`, `Material`, `Palette`, and `data::to_snbt`
[INFO] [stdout]  --> src/generator/nbts/place.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{data::to_snbt, editor::Editor, generator::{data::LoadedData, materials::{Material, MaterialId, Palette, PaletteId, PaletteSwa...
[INFO] [stdout]   |             ^^^^^^^^^^^^^                                                            ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http_mod::PositionedBlock`
[INFO] [stdout]  --> src/generator/nbts/nbt.rs:5:32
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{geometry::Point3D, http_mod::PositionedBlock, minecraft::{Block, BlockID}};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/generator/buildings/grid.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MaterialId`, `Material`, `Palette`, and `place_structure`
[INFO] [stdout]  --> src/generator/buildings/grid.rs:3:71
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...:LoadedData, materials::{Material, MaterialId, Palette, PaletteId, Placer}, nbts::{place_nbt, place_structure, NBTMeta, Rotation, Stru...
[INFO] [stdout]   |                             ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^                                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Palette`
[INFO] [stdout]  --> src/generator/buildings/data.rs:1:89
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::generator::{buildings::{shape::BuildingShape, BuildingID, Grid}, materials::{Palette, PaletteId}, style::Style};
[INFO] [stdout]   |                                                                                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/generator/buildings/stairs.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{editor::{self, Editor}, generator::{buildings::BuildingData, data::LoadedData, materials::{MaterialPlacer, MaterialRole, Plac...
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NORTH`, `WEST`, `minecraft::BlockID`, and `place_nbt`
[INFO] [stdout]  --> src/generator/buildings/roofs/roof.rs:6:126
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...::{place_nbt, place_structure, Structure, StructureId}, style::Style}, geometry::{Cardinal, Point3D, NORTH, UP, WEST}, minecraft::BlockID, n...
[INFO] [stdout]   |       ^^^^^^^^^                                                                                         ^^^^^      ^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CARDINALS`, `MaterialId`, `Material`, `PaletteId`, and `Palette`
[INFO] [stdout]  --> src/generator/buildings/walls/wall.rs:7:112
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...terials::{Material, MaterialId, Palette, PaletteId, Placer}, nbts::{Structure, StructureId}}, geometry::{Cardinal, CARDINALS, DOWN, UP...
[INFO] [stdout]   |              ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^                                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/nbts/place.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let mut placer = placer.unwrap();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/terrain/tree_cutter.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut point3d = Point3D::new(point.x, height, point.y);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `world_height`
[INFO] [stdout]   --> src/generator/paths/building.rs:84:13
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let world_height = editor.world().get_height_at(*point);
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let _world_height = editor.world().get_height_at(*point);
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `RANGE`
[INFO] [stdout]    |
[INFO] [stdout] 84 -         let world_height = editor.world().get_height_at(*point);
[INFO] [stdout] 84 +         let generator::districts::wall::RANGE = editor.world().get_height_at(*point);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/generator/districts/district_painter.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut height = editor.world_mut().get_height_at(point);
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/generator/districts/wall.rs:366:10
[INFO] [stdout]     |
[INFO] [stdout] 366 |     for (i, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout]     |          ^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 366 |     for (_i, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout]     |          +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WATER_CHECK`
[INFO] [stdout]     |
[INFO] [stdout] 366 -     for (i, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout] 366 +     for (generator::districts::wall::WATER_CHECK, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]   --> src/generator/districts/gate.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     rng: &mut RNG,
[INFO] [stdout]    |     ^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `material_placer`
[INFO] [stdout]   --> src/generator/districts/gate.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     material_placer: &mut Placer<'_>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_material_placer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]  --> src/generator/buildings/placement.rs:7:92
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn place_building(editor : &mut Editor, shape : BuildingShape, grid : Grid, style : Style, rng : &RNG, palette : &PaletteId) {
[INFO] [stdout]   |                                                                                            ^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> src/minecraft/color.rs:107:39
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn color_block(block_id: BlockID, color: Color) -> BlockID {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/districts/wall.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut to_remove = Vec::new();
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reverse_check` is never read
[INFO] [stdout]   --> src/generator/districts/wall.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 reverse_check = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `buildable` is assigned to, but never used
[INFO] [stdout]    --> src/generator/districts/wall.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let mut buildable = false;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_buildable` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `long_water` is assigned to, but never used
[INFO] [stdout]    --> src/generator/districts/wall.rs:477:13
[INFO] [stdout]     |
[INFO] [stdout] 477 |     let mut long_water = true;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_long_water` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `buildable` is never read
[INFO] [stdout]    --> src/generator/districts/wall.rs:485:13
[INFO] [stdout]     |
[INFO] [stdout] 485 |             buildable = false;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `long_water` is never read
[INFO] [stdout]    --> src/generator/districts/wall.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |             long_water = false;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_building` is never used
[INFO] [stdout]  --> src/generator/buildings/placement.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn place_building(editor : &mut Editor, shape : BuildingShape, grid : Grid, style : Style, rng : &RNG, palette : &PaletteId) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mod4_point` is never used
[INFO] [stdout]  --> src/generator/paths/routing.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn mod4_point(point : Point3D, editor : &Editor) -> Point3D {
[INFO] [stdout]   |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_best_mod4_point` is never used
[INFO] [stdout]   --> src/generator/paths/routing.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn get_best_mod4_point(point : Point3D, editor : &Editor) -> Point3D {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_path` is never used
[INFO] [stdout]   --> src/generator/paths/routing.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn get_path(
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `route_path` is never used
[INFO] [stdout]   --> src/generator/paths/routing.rs:61:14
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub async fn route_path(
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fill_out_path` is never used
[INFO] [stdout]    --> src/generator/paths/routing.rs:168:8
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub fn fill_out_path(mut points: Vec<Point3D>, allow_diagonals: bool) -> Vec<Point3D> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PathPriority` is never used
[INFO] [stdout]  --> src/generator/paths/path.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PathPriority {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Path` is never constructed
[INFO] [stdout]   --> src/generator/paths/path.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `points`, `width`, `material`, and `priority` are never used
[INFO] [stdout]   --> src/generator/paths/path.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Path {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(points: Vec<Point3D>, width: u32, material: MaterialId, priority: PathPriority) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn points(&self) -> &[Point3D] {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn width(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn material(&self) -> &MaterialId {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn priority(&self) -> PathPriority {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_path` is never used
[INFO] [stdout]  --> src/generator/paths/building.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn build_path(
[INFO] [stdout]   |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_ai_message` is never used
[INFO] [stdout]  --> src/ai/ai.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub async fn get_ai_message(system :&str, user:&str) -> String {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_json` is never used
[INFO] [stdout]   --> src/ai/ai.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn extract_json(response : &str) -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_ai_json` is never used
[INFO] [stdout]   --> src/ai/ai.rs:39:14
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub async fn try_ai_json<T>(query : &str) -> Option<T> 
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WATER_CHECK` is never used
[INFO] [stdout]  --> src/generator/districts/wall.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const WATER_CHECK: usize = 5;
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Linear` is never constructed
[INFO] [stdout]   --> src/generator/materials/feature.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum MaterialFeatureMapping {
[INFO] [stdout]    |          ---------------------- variant in this enum
[INFO] [stdout] 22 |     Linear,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/generator/nbts/place.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |         Ok(());
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 78 |         let _ = Ok(());
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 59.57s
[INFO] running `Command { std: "docker" "inspect" "d7636a0e7710ae3287711677cfa7bcaafa81e3c3fd53ba2e586bf8631e798b3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d7636a0e7710ae3287711677cfa7bcaafa81e3c3fd53ba2e586bf8631e798b3b", kill_on_drop: false }`
[INFO] [stdout] d7636a0e7710ae3287711677cfa7bcaafa81e3c3fd53ba2e586bf8631e798b3b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bb198663052617b135306e94a1d39019c8ac97c8bf7010a3332fb7e09d69f920
[INFO] running `Command { std: "docker" "start" "-a" "bb198663052617b135306e94a1d39019c8ac97c8bf7010a3332fb7e09d69f920", kill_on_drop: false }`
[INFO] [stderr]    Compiling Tome v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/geometry/functions.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashSet, hash::Hash};
[INFO] [stdout]   |                                 ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/geometry/functions.rs:20:55
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get_outer_points(points: &HashSet<Point2D>) -> (HashSet<Point2D>) {
[INFO] [stdout]    |                                                       ^                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 20 - pub fn get_outer_points(points: &HashSet<Point2D>) -> (HashSet<Point2D>) {
[INFO] [stdout] 20 + pub fn get_outer_points(points: &HashSet<Point2D>) -> HashSet<Point2D> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/minecraft/color.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `block`
[INFO] [stdout]  --> src/minecraft/color.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::minecraft::{block, BlockID};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fastnbt::Value`
[INFO] [stdout]  --> src/http_mod/provider.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use fastnbt::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `super_district` and `wall`
[INFO] [stdout]  --> src/generator/districts/test.rs:4:190
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...strict_painter::{replace_ground, replace_ground_smooth}, super_district, wall}, geometry::{Point2D, Point3D}, http_mod::{GDMCHTTPProvi...
[INFO] [stdout]   |                                                             ^^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/generator/districts/merge.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::editor::{self, Editor, World};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `env`
[INFO] [stdout]  --> src/generator/districts/wall.rs:1:44
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::{HashMap, HashSet}, env, hash::Hash};
[INFO] [stdout]   |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/generator/districts/wall.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockID`, `Block`, `EAST_2D`, `NORTH_2D`, `Seed`, `buildings::walls::Wall`, `editor::World`, and `wall`
[INFO] [stdout]  --> src/generator/districts/wall.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...::{editor::World, generator::{buildings::walls::Wall, districts::{build_wall_gate, wall}, materials::{MaterialId, Placer}, nbts::{place_structure, Structure, StructureId}, BuildClaim}, geometry::{get_neighbours_in_set, get_outer_points, is_point_surrounded_by_points, is_straight_point2d, Cardinal, Point2D, Point3D, CARDINALS_2D, EAST_2D, NORTH_2D}, minecraft::{Block, BlockForm, BlockID}, noise::{Seed, R...
[INFO] [stdout]   |       ^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^^^^^                               ^^^^                                                                                                                                                                                                                                                    ^^^^^^^  ^^^^^^^^               ^^^^^             ^^^^^^^           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/generator/districts/wall.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | ) -> (HashSet<Point2D>) {
[INFO] [stdout]    |      ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 24 - ) -> (HashSet<Point2D>) {
[INFO] [stdout] 24 + ) -> HashSet<Point2D> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/generator/districts/wall.rs:272:16
[INFO] [stdout]     |
[INFO] [stdout] 272 |             if (i == 0 || i == enhanced_wall_points.len() - 1 
[INFO] [stdout]     |                ^
[INFO] [stdout] ...
[INFO] [stdout] 276 |                 || point.y > enhanced_wall_points[i - 1].0.y + 4) {  
[INFO] [stdout]     |                                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 272 ~             if i == 0 || i == enhanced_wall_points.len() - 1 
[INFO] [stdout] 273 |                 || enhanced_wall_points[i + 1].2 == WallType::Water
[INFO] [stdout] 274 |                 || enhanced_wall_points[i - 1].2 == WallType::Water
[INFO] [stdout] 275 |                 || point.y > enhanced_wall_points[i + 1].0.y + 4
[INFO] [stdout] 276 ~                 || point.y > enhanced_wall_points[i - 1].0.y + 4 {  
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `World`
[INFO] [stdout]  --> src/generator/districts/district_painter.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{editor::{World, Editor}, generator::BuildClaim, geometry::{Point2D, Point3D, CARDINALS_2D, cardinal_to_str}, minecraft::{Bloc...
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/generator/districts/gate.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use log::{info, warn};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/generator/materials/gradient.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rect3D` and `generator::materials::feature::MaterialParameters`
[INFO] [stdout]  --> src/generator/materials/gradient.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{generator::materials::feature::MaterialParameters, geometry::{Point3D, Rect3D}, noise::Seed};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strum::IntoEnumIterator`
[INFO] [stdout]  --> src/generator/materials/palette.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use strum::IntoEnumIterator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strum_macros::EnumIter`
[INFO] [stdout]  --> src/generator/materials/role.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use strum_macros::EnumIter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockForm`, `BlockID`, and `Block`
[INFO] [stdout]  --> src/generator/terrain/forest.rs:5:40
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{data::Loadable,minecraft::{Block, BlockForm, BlockID}, generator::terrain::Tree};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/generator/terrain/test.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use std::{collections::HashSet, hash::Hash};
[INFO] [stdout]   |                                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `schemars::gen`
[INFO] [stdout]  --> src/generator/terrain/test.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use schemars::gen;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `data::Loadable` and `generator::materials::MaterialId`
[INFO] [stdout]  --> src/generator/terrain/tree.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{data::Loadable, editor::Editor, generator::materials::MaterialId, geometry::Point3D, noise::{RNG, Seed}, minecraft::{string_t...
[INFO] [stdout]   |             ^^^^^^^^^^^^^^                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/generator/terrain/tree_cutter.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::{HashMap, HashSet}, hash::Hash};
[INFO] [stdout]   |                         ^^^^^^^            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/generator/terrain/tree_cutter.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RNG` and `Seed`
[INFO] [stdout]  --> src/generator/terrain/tree_cutter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     noise::{RNG, Seed},
[INFO] [stdout]   |             ^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `collections::HashMap`
[INFO] [stdout]  --> src/generator/nbts/place.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io::Read};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MaterialId`, `Material`, `Palette`, and `data::to_snbt`
[INFO] [stdout]  --> src/generator/nbts/place.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{data::to_snbt, editor::Editor, generator::{data::LoadedData, materials::{Material, MaterialId, Palette, PaletteId, PaletteSwa...
[INFO] [stdout]   |             ^^^^^^^^^^^^^                                                            ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http_mod::PositionedBlock`
[INFO] [stdout]  --> src/generator/nbts/nbt.rs:5:32
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{geometry::Point3D, http_mod::PositionedBlock, minecraft::{Block, BlockID}};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path::Path`
[INFO] [stdout]  --> src/generator/nbts/test.rs:4:31
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use std::{env, fs::write, path::Path};
[INFO] [stdout]   |                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockID`, `HorizontalWallPosition`, `Material`, `Palette`, and `Rect3D`
[INFO] [stdout]  --> src/generator/nbts/test.rs:8:127
[INFO] [stdout]   |
[INFO] [stdout] 8 | ...::{HorizontalWallPosition, VerticalWallPosition, Wall, WallType}}, data::LoadedData, materials::{Material, Palette, Placer}, nbts::{nbt::NBTStructure, place::place_nbt, place::place_structure, NBTMeta, Structure}, style::Style}, geometry::{Cardinal, Point3D, Rect3D}, http_mod::{Coordinate, GDMCHTTPProvider}, minecraft::{Block, BlockID}, ...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^                                                                        ^^^^^^^^  ^^^^^^^                                                                                                                                                 ^^^^^^                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/generator/buildings/grid.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MaterialId`, `Material`, `Palette`, and `place_structure`
[INFO] [stdout]  --> src/generator/buildings/grid.rs:3:71
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...:LoadedData, materials::{Material, MaterialId, Palette, PaletteId, Placer}, nbts::{place_nbt, place_structure, NBTMeta, Rotation, Stru...
[INFO] [stdout]   |                             ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^                                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Material` and `Palette`
[INFO] [stdout]  --> src/generator/buildings/test.rs:7:122
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...dings::{walls::Wall, Grid}, data::LoadedData, materials::{Material, Palette, Placer}, nbts::Structure}, geometry::{Cardinal, Point3D, ...
[INFO] [stdout]   |                                                              ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Palette`
[INFO] [stdout]  --> src/generator/buildings/data.rs:1:89
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::generator::{buildings::{shape::BuildingShape, BuildingID, Grid}, materials::{Palette, PaletteId}, style::Style};
[INFO] [stdout]   |                                                                                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/generator/buildings/stairs.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{editor::{self, Editor}, generator::{buildings::BuildingData, data::LoadedData, materials::{MaterialPlacer, MaterialRole, Plac...
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NORTH`, `WEST`, `minecraft::BlockID`, and `place_nbt`
[INFO] [stdout]  --> src/generator/buildings/roofs/roof.rs:6:126
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...::{place_nbt, place_structure, Structure, StructureId}, style::Style}, geometry::{Cardinal, Point3D, NORTH, UP, WEST}, minecraft::BlockID, n...
[INFO] [stdout]   |       ^^^^^^^^^                                                                                         ^^^^^      ^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CARDINALS`, `MaterialId`, `Material`, `PaletteId`, and `Palette`
[INFO] [stdout]  --> src/generator/buildings/walls/wall.rs:7:112
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...terials::{Material, MaterialId, Palette, PaletteId, Placer}, nbts::{Structure, StructureId}}, geometry::{Cardinal, CARDINALS, DOWN, UP...
[INFO] [stdout]   |              ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^                                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env`
[INFO] [stdout]  --> src/generator/buildings/walls/test.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use std::env;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/generator/buildings/walls/test.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use log::info;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cardinal` and `stairs::StairPlacement`
[INFO] [stdout]  --> src/generator/buildings/walls/test.rs:8:131
[INFO] [stdout]   |
[INFO] [stdout] 8 | ...e, stairs::StairPlacement, walls::wall::build_walls, BuildingData, Grid}, data::LoadedData, materials::PaletteId, style::Style}, geometry::{Cardinal, P...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^                                                                                                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/generator/paths/test.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use log::info;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Path` and `self`
[INFO] [stdout]  --> src/generator/paths/test.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...editor::{self, World}, generator::{data::LoadedData, materials::MaterialId, paths::{a_star, building::build_path, path::{Path, PathPri...
[INFO] [stdout]   |             ^^^^                                                                                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::Mutex`
[INFO] [stdout]  --> src/generator/paths/test.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{sync::Mutex, time::Instant};
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json_escape`
[INFO] [stdout]  --> src/ai/test.rs:3:118
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use crate::{ai::ai::{extract_json, get_ai_message, try_ai_json}, http_mod::GDMCHTTPProvider, util::{init_logger, json_escape}};
[INFO] [stdout]   |                                                                                                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `schema_for`
[INFO] [stdout]  --> src/ai/test.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 |     use schemars::{schema_for, JsonSchema};
[INFO] [stdout]   |                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/ai/test.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use serde_json::Value;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]   --> src/generator/districts/gate.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     rng: &mut RNG,
[INFO] [stdout]    |     ^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `material_placer`
[INFO] [stdout]   --> src/generator/districts/gate.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     material_placer: &mut Placer<'_>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_material_placer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/generator/districts/district_painter.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut height = editor.world_mut().get_height_at(point);
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/generator/districts/wall.rs:366:10
[INFO] [stdout]     |
[INFO] [stdout] 366 |     for (i, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout]     |          ^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 366 |     for (_i, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout]     |          +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WATER_CHECK`
[INFO] [stdout]     |
[INFO] [stdout] 366 -     for (i, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout] 366 +     for (generator::districts::wall::WATER_CHECK, point) in inner_wall_points.clone().iter().enumerate() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/terrain/tree_cutter.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut point3d = Point3D::new(point.x, height, point.y);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `world_height`
[INFO] [stdout]   --> src/generator/paths/building.rs:84:13
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let world_height = editor.world().get_height_at(*point);
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let _world_height = editor.world().get_height_at(*point);
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `RANGE`
[INFO] [stdout]    |
[INFO] [stdout] 84 -         let world_height = editor.world().get_height_at(*point);
[INFO] [stdout] 84 +         let generator::districts::wall::RANGE = editor.world().get_height_at(*point);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/nbts/place.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let mut placer = placer.unwrap();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]   --> src/generator/paths/test.rs:41:20
[INFO] [stdout]    |
[INFO] [stdout] 41 |             async |node| {},
[INFO] [stdout]    |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/generator/nbts/test.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let path = env::current_dir().expect("Should get current dir")
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> src/minecraft/color.rs:107:39
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn color_block(block_id: BlockID, color: Color) -> BlockID {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/nbts/test.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let mut midpoint = editor.world().world_rect_2d().size / 2;
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/nbts/test.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let mut point = editor.world().add_height(midpoint);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]  --> src/generator/buildings/placement.rs:7:92
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn place_building(editor : &mut Editor, shape : BuildingShape, grid : Grid, style : Style, rng : &RNG, palette : &PaletteId) {
[INFO] [stdout]   |                                                                                            ^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]   --> src/generator/paths/test.rs:34:25
[INFO] [stdout]    |
[INFO] [stdout] 34 |             |prev_cost, node| {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/generator/districts/test.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |         let mut world = World::new(&provider).await.expect("Failed to create world");
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/generator/districts/test.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 |         let mut rng = RNG::new(seed);
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/generator/districts/test.rs:399:13
[INFO] [stdout]     |
[INFO] [stdout] 399 |         let mut rng = RNG::new(seed);
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height_map`
[INFO] [stdout]    --> src/generator/districts/test.rs:488:13
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...   let height_map = provider.get_heightmap(build_area.origin.x, build_area.origin.z, build_area.size.x, build_area.size.z, HeightMapTy...
[INFO] [stdout]     |           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_height_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `placer_rng`
[INFO] [stdout]    --> src/generator/districts/test.rs:497:17
[INFO] [stdout]     |
[INFO] [stdout] 497 |         let mut placer_rng = rng.derive();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_placer_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `glass`
[INFO] [stdout]    --> src/generator/districts/test.rs:507:13
[INFO] [stdout]     |
[INFO] [stdout] 507 |         let glass = Block {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_glass`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bedrock`
[INFO] [stdout]    --> src/generator/districts/test.rs:512:13
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let bedrock  = Block {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bedrock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/generator/districts/test.rs:497:13
[INFO] [stdout]     |
[INFO] [stdout] 497 |         let mut placer_rng = rng.derive();
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ai/test.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let mut book: Book = try_ai_json::<Book>(user).await.expect("Failed to parse AI response");
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/generator/districts/wall.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut to_remove = Vec::new();
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reverse_check` is never read
[INFO] [stdout]   --> src/generator/districts/wall.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 reverse_check = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `buildable` is assigned to, but never used
[INFO] [stdout]    --> src/generator/districts/wall.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let mut buildable = false;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_buildable` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `long_water` is assigned to, but never used
[INFO] [stdout]    --> src/generator/districts/wall.rs:477:13
[INFO] [stdout]     |
[INFO] [stdout] 477 |     let mut long_water = true;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_long_water` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `buildable` is never read
[INFO] [stdout]    --> src/generator/districts/wall.rs:485:13
[INFO] [stdout]     |
[INFO] [stdout] 485 |             buildable = false;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `long_water` is never read
[INFO] [stdout]    --> src/generator/districts/wall.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |             long_water = false;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/generator/terrain/test.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let point = Point3D::new(0, 0, 0);
[INFO] [stdout]    |             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _point = Point3D::new(0, 0, 0);
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `DEFAULT_GRID_CELL_SIZE`
[INFO] [stdout]    |
[INFO] [stdout] 99 -         let point = Point3D::new(0, 0, 0);
[INFO] [stdout] 99 +         let generator::buildings::grid::DEFAULT_GRID_CELL_SIZE = Point3D::new(0, 0, 0);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `High` is never constructed
[INFO] [stdout]  --> src/generator/paths/path.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PathPriority {
[INFO] [stdout]   |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 7 |     High,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `PathPriority` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_building` is never used
[INFO] [stdout]  --> src/generator/buildings/placement.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn place_building(editor : &mut Editor, shape : BuildingShape, grid : Grid, style : Style, rng : &RNG, palette : &PaletteId) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WATER_CHECK` is never used
[INFO] [stdout]  --> src/generator/districts/wall.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const WATER_CHECK: usize = 5;
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `priority` is never read
[INFO] [stdout]   --> src/generator/paths/path.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Path {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     priority : PathPriority,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Path` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `priority` is never used
[INFO] [stdout]   --> src/generator/paths/path.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Path {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn priority(&self) -> PathPriority {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Linear` is never constructed
[INFO] [stdout]   --> src/generator/materials/feature.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum MaterialFeatureMapping {
[INFO] [stdout]    |          ---------------------- variant in this enum
[INFO] [stdout] 22 |     Linear,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `town_type`, and `description` are never read
[INFO] [stdout]   --> src/ai/test.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         struct Town {
[INFO] [stdout]    |                ---- fields in this struct
[INFO] [stdout] 33 |             name: String,
[INFO] [stdout]    |             ^^^^
[INFO] [stdout] 34 |             town_type : TownType,
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout] 35 |             description: String,
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Town` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/generator/nbts/place.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |         Ok(());
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 78 |         let _ = Ok(());
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.65s
[INFO] running `Command { std: "docker" "inspect" "bb198663052617b135306e94a1d39019c8ac97c8bf7010a3332fb7e09d69f920", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bb198663052617b135306e94a1d39019c8ac97c8bf7010a3332fb7e09d69f920", kill_on_drop: false }`
[INFO] [stdout] bb198663052617b135306e94a1d39019c8ac97c8bf7010a3332fb7e09d69f920
