[INFO] cloning repository https://github.com/sergen-x/sergen-x-agent
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sergen-x/sergen-x-agent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsergen-x%2Fsergen-x-agent", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsergen-x%2Fsergen-x-agent'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 356231152c352df7a961c92e21cc2e63da9e2987
[INFO] checking sergen-x/sergen-x-agent against 5c543b0b8c73c7b72bc8284ced4fb22ead15734d for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsergen-x%2Fsergen-x-agent" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sergen-x/sergen-x-agent
[INFO] finished tweaking git repo https://github.com/sergen-x/sergen-x-agent
[INFO] tweaked toml for git repo https://github.com/sergen-x/sergen-x-agent written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sergen-x/sergen-x-agent on toolchain 5c543b0b8c73c7b72bc8284ced4fb22ead15734d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sergen-x/sergen-x-agent 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" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toml v0.8.12
[INFO] [stderr]   Downloaded proc-macro2 v1.0.80
[INFO] [stderr]   Downloaded winnow v0.6.7
[INFO] [stderr]   Downloaded syn v2.0.59
[INFO] [stderr]   Downloaded rustls-webpki v0.102.3
[INFO] [stderr]   Downloaded reqwest v0.12.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590
[INFO] running `Command { std: "docker" "start" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.80
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling autocfg v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.9
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]    Compiling cc v1.0.94
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking rustls-pki-types v1.4.1
[INFO] [stderr]     Checking futures-task v0.3.30
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]     Checking http-body v1.0.0
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking zeroize v1.6.0
[INFO] [stderr]     Checking tower-layer v0.3.2
[INFO] [stderr]     Checking subtle v2.5.0
[INFO] [stderr]     Checking anstyle v1.0.6
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]    Compiling serde_json v1.0.116
[INFO] [stderr]     Checking ryu v1.0.17
[INFO] [stderr]     Checking base64 v0.22.0
[INFO] [stderr]     Checking clap_lex v0.7.0
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking winnow v0.6.7
[INFO] [stderr]     Checking url v2.5.0
[INFO] [stderr]     Checking http-body-util v0.1.1
[INFO] [stderr]     Checking cpufeatures v0.2.12
[INFO] [stderr]     Checking anstream v0.6.13
[INFO] [stderr]     Checking webpki-roots v0.26.1
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]     Checking rustls-pemfile v2.1.2
[INFO] [stderr]     Checking clap_builder v4.5.2
[INFO] [stderr]     Checking indexmap v2.2.6
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking socket2 v0.5.6
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking getrandom v0.2.11
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling syn v2.0.59
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking sha2 v0.10.8
[INFO] [stderr]    Compiling ring v0.17.8
[INFO] [stderr]     Checking clap v4.5.4
[INFO] [stderr]    Compiling serde_derive v1.0.197
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.5
[INFO] [stderr]    Compiling async-trait v0.1.80
[INFO] [stderr]     Checking tokio v1.37.0
[INFO] [stderr]     Checking pin-project v1.1.5
[INFO] [stderr]     Checking rustls-webpki v0.102.3
[INFO] [stderr]     Checking hyper v1.3.1
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking hyper-util v0.1.3
[INFO] [stderr]     Checking toml_datetime v0.6.5
[INFO] [stderr]     Checking serde_spanned v0.6.5
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml_edit v0.22.12
[INFO] [stderr]     Checking hyper-rustls v0.26.0
[INFO] [stderr]     Checking reqwest v0.12.3
[INFO] [stderr]     Checking toml v0.8.12
[INFO] [stderr]     Checking sergen_x_agent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: type `SergenError` is more private than the item `Installer::install`
[INFO] [stdout]   --> src/common/installer.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | /     async fn install(
[INFO] [stdout]  7 | |         &self,
[INFO] [stdout]  8 | |         version: Option<String>,
[INFO] [stdout]  9 | |         variant: Option<String>,
[INFO] [stdout] 10 | |     ) -> Result<(), SergenError>;
[INFO] [stdout]    | |_________________________________^ method `Installer::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `Installer::install_dependencies`
[INFO] [stdout]  --> src/common/installer.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | #[async_trait]
[INFO] [stdout]   | ^^^^^^^^^^^^^^ method `Installer::install_dependencies` is reachable at visibility `pub`
[INFO] [stdout]   |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]  --> src/common/error.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) enum SergenError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `SimpleInstaller::install`
[INFO] [stdout]   --> src/common/installer.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | /     async fn install(
[INFO] [stdout] 19 | |         &self,
[INFO] [stdout] 20 | |         version: Option<String>,
[INFO] [stdout] 21 | |     ) -> Result<(), SergenError>;
[INFO] [stdout]    | |_________________________________^ method `SimpleInstaller::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `Runner::start`
[INFO] [stdout]   --> src/common/installer.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     async fn start(&self) -> Result<(), SergenError>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Runner::start` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `get_architecture`
[INFO] [stdout]   --> src/dependencies/java/adoptium/main.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | / pub fn get_architecture(
[INFO] [stdout] 26 | |     system_info: SystemInfo
[INFO] [stdout] 27 | | ) -> Result<String, SergenError> {
[INFO] [stdout]    | |________________________________^ function `get_architecture` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `<Adoptium as JavaDistribution>::get_versions`
[INFO] [stdout]   --> src/dependencies/java/adoptium/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[async_trait]
[INFO] [stdout]    | ^^^^^^^^^^^^^^ method `<Adoptium as JavaDistribution>::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `<Adoptium as JavaDistribution>::download_version`
[INFO] [stdout]   --> src/dependencies/java/adoptium/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[async_trait]
[INFO] [stdout]    | ^^^^^^^^^^^^^^ method `<Adoptium as JavaDistribution>::download_version` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `JavaDistribution::get_versions`
[INFO] [stdout]   --> src/dependencies/java/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     async fn get_versions(&self) -> Result<(), SergenError>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `JavaDistribution::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `JavaDistribution::download_version`
[INFO] [stdout]   --> src/dependencies/java/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | /     async fn download_version(
[INFO] [stdout] 12 | |         &self,
[INFO] [stdout] 13 | |         version: &str,
[INFO] [stdout] 14 | |         system: SystemInfo,
[INFO] [stdout] 15 | |         variant: &str,
[INFO] [stdout] 16 | |     ) -> Result<(), SergenError>;
[INFO] [stdout]    | |_________________________________^ method `JavaDistribution::download_version` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `download_and_install`
[INFO] [stdout]   --> src/dependencies/java/main.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | / pub async fn download_and_install(
[INFO] [stdout] 20 | |     version: String,
[INFO] [stdout] 21 | |     system: SystemInfo,
[INFO] [stdout] 22 | |     variant: String,
[INFO] [stdout] 23 | |     distribution: Arc<dyn JavaDistribution>,
[INFO] [stdout] 24 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `download_and_install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `java::main::install`
[INFO] [stdout]   --> src/dependencies/java/main.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | / pub async fn install(
[INFO] [stdout] 33 | |     version: String,
[INFO] [stdout] 34 | |     distribution: String,
[INFO] [stdout] 35 | |     variant: String,
[INFO] [stdout] 36 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `java::main::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `minecraft::mohist::mohist::Builds` is more private than the item `minecraft::mohist::mohist::get_builds`
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | / pub async fn get_builds(
[INFO] [stdout] 44 | |     project: &str,
[INFO] [stdout] 45 | |     version: &str,
[INFO] [stdout] 46 | | ) -> Result<Builds, Box<dyn Error>> {
[INFO] [stdout]    | |___________________________________^ function `minecraft::mohist::mohist::get_builds` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `minecraft::mohist::mohist::Builds` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builds {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `get_projects`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub async fn get_projects() -> Result<(), SergenError> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `get_projects` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `paper::main::get_versions`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:73:1
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub async fn get_versions(project: &str) -> Result<(), SergenError> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `paper::main::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `paper::main::get_builds`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | / pub async fn get_builds(
[INFO] [stdout] 80 | |     project: &str,
[INFO] [stdout] 81 | |     minecraft_version: &str,
[INFO] [stdout] 82 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `paper::main::get_builds` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `download_build`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | / pub async fn download_build(
[INFO] [stdout] 93 | |     project: &str,
[INFO] [stdout] 94 | |     minecraft_version: &str,
[INFO] [stdout] 95 | |     build: &str,
[INFO] [stdout] 96 | |     jar_name: &str,
[INFO] [stdout] 97 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `download_build` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `minecraft::purpur::purpur::Versions` is more private than the item `minecraft::purpur::purpur::get_versions`
[INFO] [stdout]   --> src/minecraft/purpur/purpur.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub async fn get_versions(project: &str) -> Result<Versions, Error> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `minecraft::purpur::purpur::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `minecraft::purpur::purpur::Versions` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/minecraft/purpur/purpur.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | struct Versions {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `download::VersionResponse` is more private than the item `download::get_versions`
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | / pub async fn get_versions(
[INFO] [stdout] 64 | |     project: &str
[INFO] [stdout] 65 | | ) -> Result<VersionResponse, Box<dyn std::error::Error>> {
[INFO] [stdout]    | |________________________________________________________^ function `download::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `download::VersionResponse` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct VersionResponse {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `<VanillaMinecraft as SimpleInstaller>::install`
[INFO] [stdout]   --> src/minecraft/vanilla/vanilla.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | #[async_trait]
[INFO] [stdout]    | ^^^^^^^^^^^^^^ method `<VanillaMinecraft as SimpleInstaller>::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `startup_command` is never used
[INFO] [stdout]   --> src/minecraft/main.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Minecraft {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn startup_command(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `versions` is never read
[INFO] [stdout]  --> src/minecraft/mohist/mohist.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Versions {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 8 |     versions: Vec<String>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `project_name`, `project_version`, and `builds` are never read
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builds {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 13 |     #[serde(rename = "projectName")]
[INFO] [stdout] 14 |     pub project_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 15 |     #[serde(rename = "projectVersion")]
[INFO] [stdout] 16 |     pub project_version: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub builds: Vec<Build>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct Build {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 22 |     pub number: i64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 23 |     #[serde(rename = "gitSha")]
[INFO] [stdout] 24 |     pub git_sha: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 25 |     #[serde(rename = "forgeVersion")]
[INFO] [stdout] 26 |     pub forge_version: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 27 |     #[serde(rename = "fileMd5")]
[INFO] [stdout] 28 |     pub file_md5: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 29 |     #[serde(rename = "originUrl")]
[INFO] [stdout] 30 |     pub origin_url: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 31 |     pub url: String,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 32 |     #[serde(rename = "createdAt")]
[INFO] [stdout] 33 |     pub created_at: i64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Build` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `download_latest` is never used
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Builds {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 55 |     pub fn download_latest(&self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `versions` is never read
[INFO] [stdout]  --> src/minecraft/quilt/quilt.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct VersionResponse {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 8 |     versions: Map<String, Details>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `owner` and `repo` are never read
[INFO] [stdout]  --> src/minecraft/sponge/download.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Github {
[INFO] [stdout]   |        ------ fields in this struct
[INFO] [stdout] 6 |     owner: String,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 7 |     repo: String,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Github` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `version` and `dependencies` are never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct LatestVersion {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 12 |     version: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 13 |     dependencies: Dependencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LatestVersion` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `forge`, `minecraft`, `spongeapi`, and `sponge` are never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Dependencies {
[INFO] [stdout]    |        ------------ fields in this struct
[INFO] [stdout] 18 |     forge: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     minecraft: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 20 |     spongeapi: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     #[serde(default)]
[INFO] [stdout] 22 |     sponge: Option<String>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Dependencies` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bleeding` is never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct BuildTypes {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] 27 |     bleeding: Bleeding,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BuildTypes` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latest` is never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct Bleeding {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] 32 |     latest: LatestVersion,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Bleeding` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Versions` is never constructed
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct Versions {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Recommended` is never constructed
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Recommended {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `plugin_id`, `github`, `build_types`, and `dependencies` are never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct VersionResponse {
[INFO] [stdout]    |        --------------- fields in this struct
[INFO] [stdout] 49 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 50 |     #[serde(rename = "pluginId")]
[INFO] [stdout] 51 |     plugin_id: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 52 |     github: Github,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 53 |     #[serde(rename = "buildTypes")]
[INFO] [stdout] 54 |     build_types: BuildTypes,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 55 |     dependencies: Dependencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VersionResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `download` is never used
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl VersionResponse {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 75 |     pub async fn download(
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Modpack` is never constructed
[INFO] [stdout]  --> src/minecraft/technic/technic.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Modpack {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Updates` is never constructed
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct Updates {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Info` is never constructed
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct Info {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `install` is never used
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | async fn install(modpack_name: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/main.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         handler.await.expect("Task panicked");
[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] 71 |         let _ = handler.await.expect("Task panicked");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/commands/install.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     game.install_dependencies().await;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     let _ = game.install_dependencies().await;
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/commands/install.rs:31:21
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     game.install(version.cloned(), variant.cloned()).await;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     let _ = game.install(version.cloned(), variant.cloned()).await;
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             http::download_file(&last_build.url);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/minecraft/neoforged/neoforged.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     http::download_file(&url).await;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let _unused = http::download_file(&url).await;
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/minecraft/purpur/purpur.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     http::download_file(&url).await;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let _unused = http::download_file(&url).await;
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     http::download_file(&modpack.server_pack_url);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `Installer::install`
[INFO] [stdout]   --> src/common/installer.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | /     async fn install(
[INFO] [stdout]  7 | |         &self,
[INFO] [stdout]  8 | |         version: Option<String>,
[INFO] [stdout]  9 | |         variant: Option<String>,
[INFO] [stdout] 10 | |     ) -> Result<(), SergenError>;
[INFO] [stdout]    | |_________________________________^ method `Installer::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `Installer::install_dependencies`
[INFO] [stdout]  --> src/common/installer.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | #[async_trait]
[INFO] [stdout]   | ^^^^^^^^^^^^^^ method `Installer::install_dependencies` is reachable at visibility `pub`
[INFO] [stdout]   |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]  --> src/common/error.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) enum SergenError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `SimpleInstaller::install`
[INFO] [stdout]   --> src/common/installer.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | /     async fn install(
[INFO] [stdout] 19 | |         &self,
[INFO] [stdout] 20 | |         version: Option<String>,
[INFO] [stdout] 21 | |     ) -> Result<(), SergenError>;
[INFO] [stdout]    | |_________________________________^ method `SimpleInstaller::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `Runner::start`
[INFO] [stdout]   --> src/common/installer.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     async fn start(&self) -> Result<(), SergenError>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Runner::start` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `get_architecture`
[INFO] [stdout]   --> src/dependencies/java/adoptium/main.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | / pub fn get_architecture(
[INFO] [stdout] 26 | |     system_info: SystemInfo
[INFO] [stdout] 27 | | ) -> Result<String, SergenError> {
[INFO] [stdout]    | |________________________________^ function `get_architecture` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `<Adoptium as JavaDistribution>::get_versions`
[INFO] [stdout]   --> src/dependencies/java/adoptium/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[async_trait]
[INFO] [stdout]    | ^^^^^^^^^^^^^^ method `<Adoptium as JavaDistribution>::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `<Adoptium as JavaDistribution>::download_version`
[INFO] [stdout]   --> src/dependencies/java/adoptium/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[async_trait]
[INFO] [stdout]    | ^^^^^^^^^^^^^^ method `<Adoptium as JavaDistribution>::download_version` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `JavaDistribution::get_versions`
[INFO] [stdout]   --> src/dependencies/java/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     async fn get_versions(&self) -> Result<(), SergenError>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `JavaDistribution::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `JavaDistribution::download_version`
[INFO] [stdout]   --> src/dependencies/java/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | /     async fn download_version(
[INFO] [stdout] 12 | |         &self,
[INFO] [stdout] 13 | |         version: &str,
[INFO] [stdout] 14 | |         system: SystemInfo,
[INFO] [stdout] 15 | |         variant: &str,
[INFO] [stdout] 16 | |     ) -> Result<(), SergenError>;
[INFO] [stdout]    | |_________________________________^ method `JavaDistribution::download_version` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `download_and_install`
[INFO] [stdout]   --> src/dependencies/java/main.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | / pub async fn download_and_install(
[INFO] [stdout] 20 | |     version: String,
[INFO] [stdout] 21 | |     system: SystemInfo,
[INFO] [stdout] 22 | |     variant: String,
[INFO] [stdout] 23 | |     distribution: Arc<dyn JavaDistribution>,
[INFO] [stdout] 24 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `download_and_install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `java::main::install`
[INFO] [stdout]   --> src/dependencies/java/main.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | / pub async fn install(
[INFO] [stdout] 33 | |     version: String,
[INFO] [stdout] 34 | |     distribution: String,
[INFO] [stdout] 35 | |     variant: String,
[INFO] [stdout] 36 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `java::main::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `minecraft::mohist::mohist::Builds` is more private than the item `minecraft::mohist::mohist::get_builds`
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | / pub async fn get_builds(
[INFO] [stdout] 44 | |     project: &str,
[INFO] [stdout] 45 | |     version: &str,
[INFO] [stdout] 46 | | ) -> Result<Builds, Box<dyn Error>> {
[INFO] [stdout]    | |___________________________________^ function `minecraft::mohist::mohist::get_builds` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `minecraft::mohist::mohist::Builds` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builds {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `get_projects`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub async fn get_projects() -> Result<(), SergenError> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `get_projects` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `paper::main::get_versions`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:73:1
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub async fn get_versions(project: &str) -> Result<(), SergenError> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `paper::main::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `paper::main::get_builds`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | / pub async fn get_builds(
[INFO] [stdout] 80 | |     project: &str,
[INFO] [stdout] 81 | |     minecraft_version: &str,
[INFO] [stdout] 82 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `paper::main::get_builds` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `download_build`
[INFO] [stdout]   --> src/minecraft/paper/main.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | / pub async fn download_build(
[INFO] [stdout] 93 | |     project: &str,
[INFO] [stdout] 94 | |     minecraft_version: &str,
[INFO] [stdout] 95 | |     build: &str,
[INFO] [stdout] 96 | |     jar_name: &str,
[INFO] [stdout] 97 | | ) -> Result<(), SergenError> {
[INFO] [stdout]    | |____________________________^ function `download_build` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `minecraft::purpur::purpur::Versions` is more private than the item `minecraft::purpur::purpur::get_versions`
[INFO] [stdout]   --> src/minecraft/purpur/purpur.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub async fn get_versions(project: &str) -> Result<Versions, Error> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `minecraft::purpur::purpur::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `minecraft::purpur::purpur::Versions` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/minecraft/purpur/purpur.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | struct Versions {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `download::VersionResponse` is more private than the item `download::get_versions`
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | / pub async fn get_versions(
[INFO] [stdout] 64 | |     project: &str
[INFO] [stdout] 65 | | ) -> Result<VersionResponse, Box<dyn std::error::Error>> {
[INFO] [stdout]    | |________________________________________________________^ function `download::get_versions` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `download::VersionResponse` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct VersionResponse {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SergenError` is more private than the item `<VanillaMinecraft as SimpleInstaller>::install`
[INFO] [stdout]   --> src/minecraft/vanilla/vanilla.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | #[async_trait]
[INFO] [stdout]    | ^^^^^^^^^^^^^^ method `<VanillaMinecraft as SimpleInstaller>::install` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SergenError` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/common/error.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub(crate) enum SergenError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `startup_command` is never used
[INFO] [stdout]   --> src/minecraft/main.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Minecraft {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn startup_command(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `versions` is never read
[INFO] [stdout]  --> src/minecraft/mohist/mohist.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Versions {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 8 |     versions: Vec<String>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `project_name`, `project_version`, and `builds` are never read
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builds {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 13 |     #[serde(rename = "projectName")]
[INFO] [stdout] 14 |     pub project_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 15 |     #[serde(rename = "projectVersion")]
[INFO] [stdout] 16 |     pub project_version: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub builds: Vec<Build>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct Build {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 22 |     pub number: i64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 23 |     #[serde(rename = "gitSha")]
[INFO] [stdout] 24 |     pub git_sha: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 25 |     #[serde(rename = "forgeVersion")]
[INFO] [stdout] 26 |     pub forge_version: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 27 |     #[serde(rename = "fileMd5")]
[INFO] [stdout] 28 |     pub file_md5: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 29 |     #[serde(rename = "originUrl")]
[INFO] [stdout] 30 |     pub origin_url: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 31 |     pub url: String,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 32 |     #[serde(rename = "createdAt")]
[INFO] [stdout] 33 |     pub created_at: i64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Build` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `download_latest` is never used
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Builds {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 55 |     pub fn download_latest(&self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `versions` is never read
[INFO] [stdout]  --> src/minecraft/quilt/quilt.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct VersionResponse {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 8 |     versions: Map<String, Details>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `owner` and `repo` are never read
[INFO] [stdout]  --> src/minecraft/sponge/download.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Github {
[INFO] [stdout]   |        ------ fields in this struct
[INFO] [stdout] 6 |     owner: String,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 7 |     repo: String,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Github` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `version` and `dependencies` are never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct LatestVersion {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 12 |     version: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 13 |     dependencies: Dependencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LatestVersion` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `forge`, `minecraft`, `spongeapi`, and `sponge` are never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Dependencies {
[INFO] [stdout]    |        ------------ fields in this struct
[INFO] [stdout] 18 |     forge: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     minecraft: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 20 |     spongeapi: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     #[serde(default)]
[INFO] [stdout] 22 |     sponge: Option<String>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Dependencies` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bleeding` is never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct BuildTypes {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] 27 |     bleeding: Bleeding,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BuildTypes` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `latest` is never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct Bleeding {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] 32 |     latest: LatestVersion,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Bleeding` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Versions` is never constructed
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct Versions {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Recommended` is never constructed
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Recommended {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `plugin_id`, `github`, `build_types`, and `dependencies` are never read
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct VersionResponse {
[INFO] [stdout]    |        --------------- fields in this struct
[INFO] [stdout] 49 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 50 |     #[serde(rename = "pluginId")]
[INFO] [stdout] 51 |     plugin_id: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 52 |     github: Github,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 53 |     #[serde(rename = "buildTypes")]
[INFO] [stdout] 54 |     build_types: BuildTypes,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 55 |     dependencies: Dependencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VersionResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `download` is never used
[INFO] [stdout]   --> src/minecraft/sponge/download.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl VersionResponse {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 75 |     pub async fn download(
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Modpack` is never constructed
[INFO] [stdout]  --> src/minecraft/technic/technic.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Modpack {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Updates` is never constructed
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct Updates {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Info` is never constructed
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct Info {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `install` is never used
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | async fn install(modpack_name: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/main.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         handler.await.expect("Task panicked");
[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] 71 |         let _ = handler.await.expect("Task panicked");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/commands/install.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     game.install_dependencies().await;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 30 |                     let _ = game.install_dependencies().await;
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/commands/install.rs:31:21
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     game.install(version.cloned(), variant.cloned()).await;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 31 |                     let _ = game.install(version.cloned(), variant.cloned()).await;
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]   --> src/minecraft/mohist/mohist.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             http::download_file(&last_build.url);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/minecraft/neoforged/neoforged.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     http::download_file(&url).await;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let _unused = http::download_file(&url).await;
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/minecraft/purpur/purpur.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     http::download_file(&url).await;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let _unused = http::download_file(&url).await;
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]   --> src/minecraft/technic/technic.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     http::download_file(&modpack.server_pack_url);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.90s
[INFO] running `Command { std: "docker" "inspect" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590", kill_on_drop: false }`
[INFO] [stdout] 615364fb103e749ae9caf2594506d6c13f0866f24edc6c6dd9d71682d31c7590
