[INFO] cloning repository https://github.com/Imnotndesh/TrueHub-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Imnotndesh/TrueHub-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FImnotndesh%2FTrueHub-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FImnotndesh%2FTrueHub-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0a1fd9150d45e846923f7ae3eaa9ec161d441dcd
[INFO] checking Imnotndesh/TrueHub-rs against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6+rustflags=-Znext-solver=coherence for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FImnotndesh%2FTrueHub-rs" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Imnotndesh/TrueHub-rs
[INFO] finished tweaking git repo https://github.com/Imnotndesh/TrueHub-rs
[INFO] tweaked toml for git repo https://github.com/Imnotndesh/TrueHub-rs written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Imnotndesh/TrueHub-rs on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Imnotndesh/TrueHub-rs 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: resolver for the non root package will be ignored, specify resolver at the workspace root:
[INFO] [stderr] package:   /workspace/builds/worker-1-tc1/source/api/Cargo.toml
[INFO] [stderr] workspace: /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] [stderr] warning: resolver for the non root package will be ignored, specify resolver at the workspace root:
[INFO] [stderr] package:   /workspace/builds/worker-1-tc1/source/ui/Cargo.toml
[INFO] [stderr] workspace: /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr] warning: unused workspace dependency `serde`
[INFO] [stderr]  --> Cargo.toml:4:25
[INFO] [stderr]   |
[INFO] [stderr] 4 | [workspace.dependencies.serde]
[INFO] [stderr]   |                         ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_workspace_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the workspace dependency `serde`
[INFO] [stderr] warning: workspace (manifest) generated 1 warning
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded glib-sys v0.22.6
[INFO] [stderr]   Downloaded plotters-cairo v0.9.0
[INFO] [stderr]   Downloaded pango v0.22.6
[INFO] [stderr]   Downloaded gio-sys v0.22.0
[INFO] [stderr]   Downloaded dashmap v7.0.0-rc2
[INFO] [stderr]   Downloaded gsk4-sys v0.11.1
[INFO] [stderr]   Downloaded graphene-rs v0.22.0
[INFO] [stderr]   Downloaded graphene-sys v0.22.0
[INFO] [stderr]   Downloaded gtk4-macros v0.11.0
[INFO] [stderr]   Downloaded gsk4 v0.11.1
[INFO] [stderr]   Downloaded gdk4-sys v0.11.2
[INFO] [stderr]   Downloaded gdk4 v0.11.2
[INFO] [stderr]   Downloaded gtk4-sys v0.11.3
[INFO] [stderr]   Downloaded gio v0.22.6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c
[INFO] running `Command { std: "docker" "start" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c", 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" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c", 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 -Znext-solver=coherence" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: resolver for the non root package will be ignored, specify resolver at the workspace root:
[INFO] [stderr] package:   /opt/rustwide/workdir/api/Cargo.toml
[INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml
[INFO] [stderr] warning: resolver for the non root package will be ignored, specify resolver at the workspace root:
[INFO] [stderr] package:   /opt/rustwide/workdir/ui/Cargo.toml
[INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr] warning: unused workspace dependency `serde`
[INFO] [stderr]  --> Cargo.toml:4:25
[INFO] [stderr]   |
[INFO] [stderr] 4 | [workspace.dependencies.serde]
[INFO] [stderr]   |                         ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_workspace_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the workspace dependency `serde`
[INFO] [stderr] warning: workspace (manifest) generated 1 warning
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling target-lexicon v0.13.5
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking log v0.4.30
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]     Checking http v1.4.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling libdbus-sys v0.2.7
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]    Compiling pathfinder_simd v0.5.6
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v6.0.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking dbus v0.9.11
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling cfg-expr v0.20.8
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling font-kit v0.14.3
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]     Checking uuid v1.23.2
[INFO] [stderr]     Checking dashmap v7.0.0-rc2
[INFO] [stderr]     Checking oneshot v0.2.1
[INFO] [stderr]    Compiling glib-build-tools v0.22.8
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking float-ord v0.3.2
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]    Compiling ui v0.1.0 (/opt/rustwide/workdir/ui)
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling system-deps v7.0.8
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling glib-sys v0.22.6
[INFO] [stderr]    Compiling gobject-sys v0.22.6
[INFO] [stderr]    Compiling gio-sys v0.22.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.22.0
[INFO] [stderr]    Compiling pango-sys v0.22.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.22.0
[INFO] [stderr]    Compiling graphene-sys v0.22.0
[INFO] [stderr]    Compiling gdk4-sys v0.11.2
[INFO] [stderr]    Compiling gsk4-sys v0.11.1
[INFO] [stderr]    Compiling gtk4-sys v0.11.3
[INFO] [stderr]    Compiling libadwaita-sys v0.9.2
[INFO] [stderr]     Checking plotters-bitmap v0.3.7
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking webpki v0.22.4
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling glib-macros v0.22.6
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]    Compiling gtk4-macros v0.11.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking dbus-secret-service v4.1.0
[INFO] [stderr]     Checking keyring v3.6.3
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking glib v0.22.8
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking gio v0.22.6
[INFO] [stderr]     Checking cairo-rs v0.22.0
[INFO] [stderr]     Checking graphene-rs v0.22.0
[INFO] [stderr]     Checking plotters-cairo v0.9.0
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tungstenite v0.29.0
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking tokio-tungstenite v0.29.0
[INFO] [stderr]     Checking api v0.1.0 (/opt/rustwide/workdir/api)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> api/src/models/user.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> api/src/models/user.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserService` is never constructed
[INFO] [stdout]   --> api/src/services/user.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct UserService {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `change_password`, `update_user`, and `get_user_obj` are never used
[INFO] [stdout]   --> api/src/services/user.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl UserService {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub async fn change_password(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn update_user(
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub async fn get_user_obj(&self, req: GetUserObjRequest) -> ApiResult<UserObjResponse> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VmService` is never constructed
[INFO] [stdout]   --> api/src/services/vm.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct VmService {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> api/src/services/vm.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl VmService {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  16 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  20 |     pub async fn query_all_vms(&self) -> ApiResult<Vec<VmQueryResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn get_vm_instance(&self, id: i32) -> ApiResult<VmQueryResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub async fn start_vm(&self, id: i32, overcommit: bool) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn restart_vm(&self, id: i32) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub async fn stop_vm(
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub async fn suspend_vm(&self, id: i32) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn power_off_vm(&self, id: i32) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub async fn resume_vm(&self, id: i32) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub async fn clone_vm(&self, id: i32, clone_name: Option<&str>) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub async fn get_memory_usage(&self, id: i32) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn delete_vm(
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub async fn get_display_uri(&self, id: i32) -> ApiResult<VmDisplayUriQueryResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn get_vm_status(&self, id: i32) -> ApiResult<VmStatus> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn get_bootloader_options(&self) -> ApiResult<BootloaderChoicesResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn get_bootloader_ovmf_options(&self) -> ApiResult<BootloaderOVMFChoicesResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_cpu_model_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub async fn create_vm(&self, args: VmCreateArgs) -> ApiResult<VmQueryResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn export_disk_image(&self, options: VMExportDiskIMageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub async fn get_vm_flags(&self) -> ApiResult<VmFlagsResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn get_available_memory(&self,overcommit: Option<bool>) -> ApiResult<u32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub async fn get_console(&self,id: u32) -> ApiResult<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn get_display_devices(&self,id :u32) -> ApiResult<Vec<VmDisplayDevice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn get_vm_memory_info(&self,id :u32) -> ApiResult<VmGetVmMemoryInfoResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub async fn get_vm_memory_in_use(&self,id :u32) -> ApiResult<VMGetVmemoryInUseResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn get_guest_architecture_and_machine_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub async fn import_disk_image(&self, options: VMImportDiskImageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub async fn download_log_file(&self, id: i32) -> ApiResult<DownloadHandle> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub async fn get_log_file_path(&self,id:u32) -> ApiResult<Option<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub async fn get_maximum_supported_vcpus(&self) -> ApiResult<u32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub async fn port_wizard(&self)-> ApiResult<VMPortWizardResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn random_mac(&self) -> ApiResult<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_resolution_choices (&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub async fn get_supports_virtualization(&self) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub async fn update_vm(
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub async fn get_virtualization_details(&self) -> ApiResult<VMVirtualizationDetailsResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub async fn get_device_bind_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub async fn convert_device(&self, args:VMDeviceConvertArgs)-> ApiResult<bool>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub async fn create_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub async fn delete_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub async fn get_disk_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub async fn get_device_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub async fn get_iommu_enabled(&self) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub async fn get_device_iotype_choices(&self) -> ApiResult<VMDeviceIotypeChoicesResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub async fn get_nic_attach_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn get_passthrough_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn get_passthrough_device_choices(&self) -> ApiResult<VMDevicePassthroughInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub async fn get_pptdev_choices(&self) -> ApiResult<VMDevicePassthroughInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub async fn query_devices(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub async fn update_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub async fn get_usb_controller_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub async fn get_usb_passthrough_choices(&self) -> ApiResult<USBPassthroughInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub async fn get_usb_passthrough_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub async fn get_device_virtual_size(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtService` is never constructed
[INFO] [stdout]  --> api/src/services/virt.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct VirtService {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> api/src/services/virt.rs:14:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl VirtService {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  14 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub async fn get_all_instances(&self) -> ApiResult<Vec<ContainerResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub async fn create_instance(&self, args: CreateContainerArgs) -> ApiResult<ContainerResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub async fn get_instance(&self, id: &str) -> ApiResult<ContainerResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub async fn start_instance(&self, id: &str) -> ApiResult<f64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub async fn stop_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn restart_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub async fn delete_instance(&self, id: &str) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub async fn update_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn get_instance_devices(&self, id: &str) -> ApiResult<Vec<Device>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub async fn delete_instance_device(&self, id: &str, device_name: &str) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub async fn get_image_choices(&self) -> ApiResult<Vec<ImageChoice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn add_instance_device(&self, id: &str, device: Device) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn update_instance_device(&self, id: &str, device: Device) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn set_bootable_disk(&self, id: &str, disk: &str) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub async fn get_pool_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn get_bridge_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_global_config(&self) -> ApiResult<VirtGlobalEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn query_volumes(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn update_global_config(&self, args: VirtGlobalUpdateArgs) -> ApiResult<VirtGlobalEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn get_network(&self, name: &str) -> ApiResult<VirtGlobalGetNetworkResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn get_disk_choices(&self) -> ApiResult<HashMap<String, String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn get_gpu_choices(&self, gpu_type: &str) -> ApiResult<HashMap<String, GPUChoice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn get_nic_choices(&self, nic_type: &str) -> ApiResult<HashMap<String, String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub async fn export_disk_image(&self, args: VirtDeviceExportDiskImageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub async fn import_disk_image(&self, args: VirtDeviceImportDiskImageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub async fn get_pci_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub async fn get_usb_choices(&self) -> ApiResult<HashMap<String, USBChoice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub async fn create_volume(&self, args: VirtVolumeCreateArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub async fn delete_volume(&self, id: &str) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_volume_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub async fn update_volume(&self, id: &str, args: VirtVolumeUpdateArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub async fn import_iso(&self, args: VirtVolumeImportIsoArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub async fn import_zvol(&self, args: VirtVolumeImportZvolArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StorageService` is never constructed
[INFO] [stdout]   --> api/src/services/storage.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct StorageService {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> api/src/services/storage.rs:20:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl StorageService {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  20 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     pub async fn get_scrub_tasks(&self) -> ApiResult<Vec<PoolScrubQueryResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub async fn get_scrub_task_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub async fn create_scrub_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub async fn delete_scrub_task(&self, id: i32) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub async fn update_scrub_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub async fn set_scrub_state(&self, args: TakeActionOnPoolScrubArgs) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn run_scrub_task(&self, args: RunPoolScrubArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub async fn create_snapshot_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn delete_snapshot_task(&self, args: DeleteSnapshotTaskArgs) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub async fn check_snapshot_task_affected_by_deletion(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn execute_snapshot_task(&self, args: ExecuteSnapshotTaskArgs) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn query_all_snapshot_tasks(&self) -> ApiResult<Vec<SnapshotCreationResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn get_snapshot_task_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub async fn update_snapshot_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn check_affected_tasks_if_updated(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_all_datasets(&self) -> ApiResult<Vec<ZfsDataset>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub async fn get_dataset_details(&self) -> ApiResult<Vec<DatasetDetailsResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn destroy_dataset_snapshots(&self, args: DestroySnapshotsArgs) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub async fn delete_dataset(&self, dataset_name: &str, recursive: bool) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn create_dataset(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoreService` is never constructed
[INFO] [stdout]  --> api/src/services/core.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CoreService {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `download` are never used
[INFO] [stdout]   --> api/src/services/core.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl CoreService {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn download(
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientConfig` is never constructed
[INFO] [stdout]  --> api/src/models/config.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ClientConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_enable_ping` is never used
[INFO] [stdout]   --> api/src/models/config.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn default_enable_ping() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_ping_timeout_ms` is never used
[INFO] [stdout]   --> api/src/models/config.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn default_ping_timeout_ms() -> u64 { 5000 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_connection_timeout_ms` is never used
[INFO] [stdout]   --> api/src/models/config.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn default_connection_timeout_ms() -> u64 { 10000 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_enable_debug_logging` is never used
[INFO] [stdout]   --> api/src/models/config.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn default_enable_debug_logging() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdateRequest` is never constructed
[INFO] [stdout]  --> api/src/models/user.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct UserUpdateRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdate` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct UserUpdate {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdateResponse` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct UserUpdateResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_home` is never used
[INFO] [stdout]   --> api/src/models/user.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn default_home() -> String { "/var/empty".to_string() }
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_shell` is never used
[INFO] [stdout]   --> api/src/models/user.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn default_shell() -> String { "/usr/bin/zsh".to_string() }
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]   --> api/src/models/user.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn default_true() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserGroup` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct UserGroup {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PasswordHistoryEntry` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct PasswordHistoryEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetUserObjRequest` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct GetUserObjRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserObjResponse` is never constructed
[INFO] [stdout]    --> api/src/models/user.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct UserObjResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserSource` is never used
[INFO] [stdout]    --> api/src/models/user.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub enum UserSource {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShellChoice` is never constructed
[INFO] [stdout]    --> api/src/models/user.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct ShellChoice {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangeUserPasswordRequest` is never constructed
[INFO] [stdout]    --> api/src/models/user.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct ChangeUserPasswordRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LOGGING_ENABLED` is never used
[INFO] [stdout]  --> api/src/logger.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | static LOGGING_ENABLED: OnceLock<bool> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]  --> api/src/logger.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn init(enable_debug: bool) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_enabled` is never used
[INFO] [stdout]   --> api/src/logger.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn is_enabled() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserService` is never constructed
[INFO] [stdout]   --> api/src/services/user.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct UserService {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `change_password`, `update_user`, and `get_user_obj` are never used
[INFO] [stdout]   --> api/src/services/user.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl UserService {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub async fn change_password(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn update_user(
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub async fn get_user_obj(&self, req: GetUserObjRequest) -> ApiResult<UserObjResponse> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VmService` is never constructed
[INFO] [stdout]   --> api/src/services/vm.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct VmService {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> api/src/services/vm.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl VmService {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  16 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  20 |     pub async fn query_all_vms(&self) -> ApiResult<Vec<VmQueryResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn get_vm_instance(&self, id: i32) -> ApiResult<VmQueryResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub async fn start_vm(&self, id: i32, overcommit: bool) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn restart_vm(&self, id: i32) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub async fn stop_vm(
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub async fn suspend_vm(&self, id: i32) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn power_off_vm(&self, id: i32) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub async fn resume_vm(&self, id: i32) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub async fn clone_vm(&self, id: i32, clone_name: Option<&str>) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub async fn get_memory_usage(&self, id: i32) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn delete_vm(
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub async fn get_display_uri(&self, id: i32) -> ApiResult<VmDisplayUriQueryResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn get_vm_status(&self, id: i32) -> ApiResult<VmStatus> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn get_bootloader_options(&self) -> ApiResult<BootloaderChoicesResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn get_bootloader_ovmf_options(&self) -> ApiResult<BootloaderOVMFChoicesResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_cpu_model_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub async fn create_vm(&self, args: VmCreateArgs) -> ApiResult<VmQueryResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn export_disk_image(&self, options: VMExportDiskIMageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub async fn get_vm_flags(&self) -> ApiResult<VmFlagsResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn get_available_memory(&self,overcommit: Option<bool>) -> ApiResult<u32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub async fn get_console(&self,id: u32) -> ApiResult<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn get_display_devices(&self,id :u32) -> ApiResult<Vec<VmDisplayDevice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn get_vm_memory_info(&self,id :u32) -> ApiResult<VmGetVmMemoryInfoResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub async fn get_vm_memory_in_use(&self,id :u32) -> ApiResult<VMGetVmemoryInUseResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn get_guest_architecture_and_machine_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub async fn import_disk_image(&self, options: VMImportDiskImageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub async fn download_log_file(&self, id: i32) -> ApiResult<DownloadHandle> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub async fn get_log_file_path(&self,id:u32) -> ApiResult<Option<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub async fn get_maximum_supported_vcpus(&self) -> ApiResult<u32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub async fn port_wizard(&self)-> ApiResult<VMPortWizardResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn random_mac(&self) -> ApiResult<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_resolution_choices (&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub async fn get_supports_virtualization(&self) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub async fn update_vm(
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub async fn get_virtualization_details(&self) -> ApiResult<VMVirtualizationDetailsResult>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub async fn get_device_bind_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub async fn convert_device(&self, args:VMDeviceConvertArgs)-> ApiResult<bool>{
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub async fn create_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub async fn delete_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub async fn get_disk_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub async fn get_device_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub async fn get_iommu_enabled(&self) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub async fn get_device_iotype_choices(&self) -> ApiResult<VMDeviceIotypeChoicesResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub async fn get_nic_attach_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn get_passthrough_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn get_passthrough_device_choices(&self) -> ApiResult<VMDevicePassthroughInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub async fn get_pptdev_choices(&self) -> ApiResult<VMDevicePassthroughInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub async fn query_devices(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub async fn update_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub async fn get_usb_controller_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub async fn get_usb_passthrough_choices(&self) -> ApiResult<USBPassthroughInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub async fn get_usb_passthrough_device(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub async fn get_device_virtual_size(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtService` is never constructed
[INFO] [stdout]  --> api/src/services/virt.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct VirtService {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> api/src/services/virt.rs:14:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl VirtService {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  14 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub async fn get_all_instances(&self) -> ApiResult<Vec<ContainerResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub async fn create_instance(&self, args: CreateContainerArgs) -> ApiResult<ContainerResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub async fn get_instance(&self, id: &str) -> ApiResult<ContainerResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub async fn start_instance(&self, id: &str) -> ApiResult<f64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub async fn stop_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn restart_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub async fn delete_instance(&self, id: &str) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub async fn update_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn get_instance_devices(&self, id: &str) -> ApiResult<Vec<Device>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub async fn delete_instance_device(&self, id: &str, device_name: &str) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub async fn get_image_choices(&self) -> ApiResult<Vec<ImageChoice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn add_instance_device(&self, id: &str, device: Device) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn update_instance_device(&self, id: &str, device: Device) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn set_bootable_disk(&self, id: &str, disk: &str) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub async fn get_pool_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn get_bridge_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn get_global_config(&self) -> ApiResult<VirtGlobalEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn query_volumes(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn update_global_config(&self, args: VirtGlobalUpdateArgs) -> ApiResult<VirtGlobalEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn get_network(&self, name: &str) -> ApiResult<VirtGlobalGetNetworkResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn get_disk_choices(&self) -> ApiResult<HashMap<String, String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn get_gpu_choices(&self, gpu_type: &str) -> ApiResult<HashMap<String, GPUChoice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn get_nic_choices(&self, nic_type: &str) -> ApiResult<HashMap<String, String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub async fn export_disk_image(&self, args: VirtDeviceExportDiskImageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub async fn import_disk_image(&self, args: VirtDeviceImportDiskImageArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub async fn get_pci_choices(&self) -> ApiResult<HashMap<String, serde_json::Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub async fn get_usb_choices(&self) -> ApiResult<HashMap<String, USBChoice>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub async fn create_volume(&self, args: VirtVolumeCreateArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub async fn delete_volume(&self, id: &str) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_volume_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub async fn update_volume(&self, id: &str, args: VirtVolumeUpdateArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub async fn import_iso(&self, args: VirtVolumeImportIsoArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub async fn import_zvol(&self, args: VirtVolumeImportZvolArgs) -> ApiResult<VirtVolumeEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StorageService` is never constructed
[INFO] [stdout]   --> api/src/services/storage.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct StorageService {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> api/src/services/storage.rs:20:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl StorageService {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  20 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     pub async fn get_scrub_tasks(&self) -> ApiResult<Vec<PoolScrubQueryResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub async fn get_scrub_task_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub async fn create_scrub_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub async fn delete_scrub_task(&self, id: i32) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub async fn update_scrub_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub async fn set_scrub_state(&self, args: TakeActionOnPoolScrubArgs) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn run_scrub_task(&self, args: RunPoolScrubArgs) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub async fn create_snapshot_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn delete_snapshot_task(&self, args: DeleteSnapshotTaskArgs) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub async fn check_snapshot_task_affected_by_deletion(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn execute_snapshot_task(&self, args: ExecuteSnapshotTaskArgs) -> ApiResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn query_all_snapshot_tasks(&self) -> ApiResult<Vec<SnapshotCreationResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn get_snapshot_task_instance(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub async fn update_snapshot_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn check_affected_tasks_if_updated(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_all_datasets(&self) -> ApiResult<Vec<ZfsDataset>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub async fn get_dataset_details(&self) -> ApiResult<Vec<DatasetDetailsResponse>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn destroy_dataset_snapshots(&self, args: DestroySnapshotsArgs) -> ApiResult<i32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub async fn delete_dataset(&self, dataset_name: &str, recursive: bool) -> ApiResult<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn create_dataset(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoreService` is never constructed
[INFO] [stdout]  --> api/src/services/core.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CoreService {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `download` are never used
[INFO] [stdout]   --> api/src/services/core.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl CoreService {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(client: Arc<TrueNasClient>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn download(
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientConfig` is never constructed
[INFO] [stdout]  --> api/src/models/config.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ClientConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_enable_ping` is never used
[INFO] [stdout]   --> api/src/models/config.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn default_enable_ping() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_ping_timeout_ms` is never used
[INFO] [stdout]   --> api/src/models/config.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn default_ping_timeout_ms() -> u64 { 5000 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_connection_timeout_ms` is never used
[INFO] [stdout]   --> api/src/models/config.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn default_connection_timeout_ms() -> u64 { 10000 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_enable_debug_logging` is never used
[INFO] [stdout]   --> api/src/models/config.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn default_enable_debug_logging() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdateRequest` is never constructed
[INFO] [stdout]  --> api/src/models/user.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct UserUpdateRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdate` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct UserUpdate {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdateResponse` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct UserUpdateResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_home` is never used
[INFO] [stdout]   --> api/src/models/user.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn default_home() -> String { "/var/empty".to_string() }
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_shell` is never used
[INFO] [stdout]   --> api/src/models/user.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn default_shell() -> String { "/usr/bin/zsh".to_string() }
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]   --> api/src/models/user.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn default_true() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserGroup` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct UserGroup {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PasswordHistoryEntry` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct PasswordHistoryEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetUserObjRequest` is never constructed
[INFO] [stdout]   --> api/src/models/user.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct GetUserObjRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserObjResponse` is never constructed
[INFO] [stdout]    --> api/src/models/user.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct UserObjResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserSource` is never used
[INFO] [stdout]    --> api/src/models/user.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub enum UserSource {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShellChoice` is never constructed
[INFO] [stdout]    --> api/src/models/user.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct ShellChoice {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangeUserPasswordRequest` is never constructed
[INFO] [stdout]    --> api/src/models/user.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct ChangeUserPasswordRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LOGGING_ENABLED` is never used
[INFO] [stdout]  --> api/src/logger.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | static LOGGING_ENABLED: OnceLock<bool> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]  --> api/src/logger.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn init(enable_debug: bool) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_enabled` is never used
[INFO] [stdout]   --> api/src/logger.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn is_enabled() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking pango v0.22.6
[INFO] [stderr]     Checking gdk-pixbuf v0.22.0
[INFO] [stderr]     Checking gdk4 v0.11.2
[INFO] [stderr]     Checking gsk4 v0.11.1
[INFO] [stderr]     Checking gtk4 v0.11.4
[INFO] [stderr]     Checking libadwaita v0.9.2
[INFO] [stdout] warning: unused import: `accounts`
[INFO] [stdout]   --> ui/src/pages/login.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | use api::store::{accounts, prefs};
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plotters_cairo::CairoBackend`
[INFO] [stdout]  --> ui/src/pages/performance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use plotters_cairo::CairoBackend;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Entry`
[INFO] [stdout]  --> ui/src/pages/app_config.rs:9:25
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Align, Box as GBox, Entry, Orientation, PolicyType,
[INFO] [stdout]   |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> ui/src/pages/vms.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `api::client::TrueNasClient`
[INFO] [stdout]   --> ui/src/pages/vms.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use api::client::TrueNasClient;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VmTimeZone`
[INFO] [stdout]  --> ui/src/pages/vm_create.rs:4:232
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...tloader, VmCreateArgs, VmDeviceCreateArgs, VmQueryResponse, VmTimeZone};
[INFO] [stdout]   |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Align` and `Entry`
[INFO] [stdout]  --> ui/src/pages/vm_create.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Align, Box as GBox, Entry, Orientation, PolicyType, ScrolledWindow,
[INFO] [stdout]   |     ^^^^^               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SelectionMode`
[INFO] [stdout]   --> ui/src/pages/vm_devices_edit.rs:12:73
[INFO] [stdout]    |
[INFO] [stdout] 12 | use gtk4::{Align, Box as GBox, Orientation, PolicyType, ScrolledWindow, SelectionMode, Stack, StackTransitionType, StringList};
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `USBAttributes`
[INFO] [stdout]  --> ui/src/pages/vm_device_create.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     USBAttributes, VMCDROMDevice, VMDiskDevice, VMDisplayDevice, VMNICDevice,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Align`
[INFO] [stdout]   --> ui/src/pages/vm_device_create.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Align, Box as GBox, Orientation, PolicyType, ScrolledWindow,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Protocol`
[INFO] [stdout]  --> ui/src/pages/vm_device_edit.rs:5:59
[INFO] [stdout]   |
[INFO] [stdout] 5 |     DeviceAttributes, DiskInterfaceType, IoType, NicType, Protocol, Resolution,
[INFO] [stdout]   |                                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> ui/src/pages/datasets.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> ui/src/pages/containers.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 328 | /     /// TODO:   1. Broken start stop button in container
[INFO] [stdout] 329 | |     ///         2. Fix pool selection for disk passthrough
[INFO] [stdout] 330 | |     ///         3. Add job tracking to start / stop using card loader
[INFO] [stdout]     | |_____________________________________________________________________^
[INFO] [stdout] 331 |       let load_rc = std::sync::Arc::new(load);
[INFO] [stdout]     |       ---------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Device`
[INFO] [stdout]  --> ui/src/pages/container_info.rs:4:44
[INFO] [stdout]   |
[INFO] [stdout] 4 | use api::models::virt::{ContainerResponse, Device};
[INFO] [stdout]   |                                            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Align`
[INFO] [stdout]   --> ui/src/pages/container_device_add.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Align, Box as GBox, Orientation, PolicyType, ScrolledWindow,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ListBox`
[INFO] [stdout]   --> ui/src/pages/container_create.rs:10:39
[INFO] [stdout]    |
[INFO] [stdout] 10 | use gtk4::{Align, Box as GBox, Entry, ListBox, Orientation, PolicyType, ScrolledWindow, SelectionMode, Stack, StackTransitionType, S...
[INFO] [stdout]    |                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ActionRow`
[INFO] [stdout]   --> ui/src/pages/container_create.rs:13:73
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Banner, Clamp, HeaderBar, PreferencesGroup, SwitchRow, ToolbarView, ActionRow,
[INFO] [stdout]    |                                                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToggleButton`
[INFO] [stdout]  --> ui/src/nav.rs:2:88
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk4::{Align, Box as GBox, Orientation, SelectionMode, Stack, StackTransitionType, ToggleButton};
[INFO] [stdout]   |                                                                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `accounts`
[INFO] [stdout]   --> ui/src/pages/login.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | use api::store::{accounts, prefs};
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plotters_cairo::CairoBackend`
[INFO] [stdout]  --> ui/src/pages/performance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use plotters_cairo::CairoBackend;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Entry`
[INFO] [stdout]  --> ui/src/pages/app_config.rs:9:25
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Align, Box as GBox, Entry, Orientation, PolicyType,
[INFO] [stdout]   |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> ui/src/pages/vms.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `api::client::TrueNasClient`
[INFO] [stdout]   --> ui/src/pages/vms.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use api::client::TrueNasClient;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VmTimeZone`
[INFO] [stdout]  --> ui/src/pages/vm_create.rs:4:232
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...tloader, VmCreateArgs, VmDeviceCreateArgs, VmQueryResponse, VmTimeZone};
[INFO] [stdout]   |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Align` and `Entry`
[INFO] [stdout]  --> ui/src/pages/vm_create.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Align, Box as GBox, Entry, Orientation, PolicyType, ScrolledWindow,
[INFO] [stdout]   |     ^^^^^               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SelectionMode`
[INFO] [stdout]   --> ui/src/pages/vm_devices_edit.rs:12:73
[INFO] [stdout]    |
[INFO] [stdout] 12 | use gtk4::{Align, Box as GBox, Orientation, PolicyType, ScrolledWindow, SelectionMode, Stack, StackTransitionType, StringList};
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `USBAttributes`
[INFO] [stdout]  --> ui/src/pages/vm_device_create.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     USBAttributes, VMCDROMDevice, VMDiskDevice, VMDisplayDevice, VMNICDevice,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Align`
[INFO] [stdout]   --> ui/src/pages/vm_device_create.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Align, Box as GBox, Orientation, PolicyType, ScrolledWindow,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Protocol`
[INFO] [stdout]  --> ui/src/pages/vm_device_edit.rs:5:59
[INFO] [stdout]   |
[INFO] [stdout] 5 |     DeviceAttributes, DiskInterfaceType, IoType, NicType, Protocol, Resolution,
[INFO] [stdout]   |                                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> ui/src/pages/datasets.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> ui/src/pages/containers.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 328 | /     /// TODO:   1. Broken start stop button in container
[INFO] [stdout] 329 | |     ///         2. Fix pool selection for disk passthrough
[INFO] [stdout] 330 | |     ///         3. Add job tracking to start / stop using card loader
[INFO] [stdout]     | |_____________________________________________________________________^
[INFO] [stdout] 331 |       let load_rc = std::sync::Arc::new(load);
[INFO] [stdout]     |       ---------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Device`
[INFO] [stdout]  --> ui/src/pages/container_info.rs:4:44
[INFO] [stdout]   |
[INFO] [stdout] 4 | use api::models::virt::{ContainerResponse, Device};
[INFO] [stdout]   |                                            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Align`
[INFO] [stdout]   --> ui/src/pages/container_device_add.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Align, Box as GBox, Orientation, PolicyType, ScrolledWindow,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ListBox`
[INFO] [stdout]   --> ui/src/pages/container_create.rs:10:39
[INFO] [stdout]    |
[INFO] [stdout] 10 | use gtk4::{Align, Box as GBox, Entry, ListBox, Orientation, PolicyType, ScrolledWindow, SelectionMode, Stack, StackTransitionType, S...
[INFO] [stdout]    |                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ActionRow`
[INFO] [stdout]   --> ui/src/pages/container_create.rs:13:73
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Banner, Clamp, HeaderBar, PreferencesGroup, SwitchRow, ToolbarView, ActionRow,
[INFO] [stdout]    |                                                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToggleButton`
[INFO] [stdout]  --> ui/src/nav.rs:2:88
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk4::{Align, Box as GBox, Orientation, SelectionMode, Stack, StackTransitionType, ToggleButton};
[INFO] [stdout]   |                                                                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:583:9
[INFO] [stdout]     |
[INFO] [stdout] 583 |     row.set_icon_name(Some("utilities-system-monitor-symbolic"));
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:625:15
[INFO] [stdout]     |
[INFO] [stdout] 625 |         empty.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:795:15
[INFO] [stdout]     |
[INFO] [stdout] 795 |         empty.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:805:14
[INFO] [stdout]     |
[INFO] [stdout] 805 |     expander.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:820:13
[INFO] [stdout]     |
[INFO] [stdout] 820 |         row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:583:9
[INFO] [stdout]     |
[INFO] [stdout] 583 |     row.set_icon_name(Some("utilities-system-monitor-symbolic"));
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:625:15
[INFO] [stdout]     |
[INFO] [stdout] 625 |         empty.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:373:16
[INFO] [stdout]     |
[INFO] [stdout] 373 |     status_row.set_icon_name(Some(if pool.healthy { "emblem-ok-symbolic" } else { "dialog-error-symbolic" }));
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:485:23
[INFO] [stdout]     |
[INFO] [stdout] 485 |             empty_row.set_icon_name(Some("dialog-information-symbolic"));
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:795:15
[INFO] [stdout]     |
[INFO] [stdout] 795 |         empty.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:805:14
[INFO] [stdout]     |
[INFO] [stdout] 805 |     expander.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/home.rs:820:13
[INFO] [stdout]     |
[INFO] [stdout] 820 |         row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:169:14
[INFO] [stdout]     |
[INFO] [stdout] 169 |     name_row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:218:15
[INFO] [stdout]     |
[INFO] [stdout] 218 |     smart_row.set_icon_name(Some("emblem-system-symbolic"));
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:373:16
[INFO] [stdout]     |
[INFO] [stdout] 373 |     status_row.set_icon_name(Some(if pool.healthy { "emblem-ok-symbolic" } else { "dialog-error-symbolic" }));
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:264:18
[INFO] [stdout]     |
[INFO] [stdout] 264 |     transfer_row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:288:18
[INFO] [stdout]     |
[INFO] [stdout] 288 |         pool_row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:485:23
[INFO] [stdout]     |
[INFO] [stdout] 485 |             empty_row.set_icon_name(Some("dialog-information-symbolic"));
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:298:17
[INFO] [stdout]     |
[INFO] [stdout] 298 |             exp.set_icon_name(Some("emblem-ok-symbolic"));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:313:17
[INFO] [stdout]     |
[INFO] [stdout] 313 |             exp.set_icon_name(Some("dialog-error-symbolic"));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:333:12
[INFO] [stdout]     |
[INFO] [stdout] 333 |     tm_row.set_icon_name(Some("media-tape-symbolic"));
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:464:13
[INFO] [stdout]     |
[INFO] [stdout] 464 |         exp.set_icon_name(Some("network-wired-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |         exp.set_icon_name(Some("computer-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:516:13
[INFO] [stdout]     |
[INFO] [stdout] 516 |         row.set_icon_name(Some("emblem-system-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:169:14
[INFO] [stdout]     |
[INFO] [stdout] 169 |     name_row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:218:15
[INFO] [stdout]     |
[INFO] [stdout] 218 |     smart_row.set_icon_name(Some("emblem-system-symbolic"));
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:264:18
[INFO] [stdout]     |
[INFO] [stdout] 264 |     transfer_row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/disk_info.rs:288:18
[INFO] [stdout]     |
[INFO] [stdout] 288 |         pool_row.set_icon_name(Some("drive-harddisk-symbolic"));
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:298:17
[INFO] [stdout]     |
[INFO] [stdout] 298 |             exp.set_icon_name(Some("emblem-ok-symbolic"));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:313:17
[INFO] [stdout]     |
[INFO] [stdout] 313 |             exp.set_icon_name(Some("dialog-error-symbolic"));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:333:12
[INFO] [stdout]     |
[INFO] [stdout] 333 |     tm_row.set_icon_name(Some("media-tape-symbolic"));
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/performance.rs:541:9
[INFO] [stdout]     |
[INFO] [stdout] 541 |     row.set_icon_name(Some(metric.icon));
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:464:13
[INFO] [stdout]     |
[INFO] [stdout] 464 |         exp.set_icon_name(Some("network-wired-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |         exp.set_icon_name(Some("computer-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/share_info.rs:516:13
[INFO] [stdout]     |
[INFO] [stdout] 516 |         row.set_icon_name(Some("emblem-system-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/performance.rs:541:9
[INFO] [stdout]     |
[INFO] [stdout] 541 |     row.set_icon_name(Some(metric.icon));
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/app_details.rs:241:13
[INFO] [stdout]     |
[INFO] [stdout] 241 |         row.set_icon_name(Some("network-workgroup-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/app_details.rs:323:14
[INFO] [stdout]     |
[INFO] [stdout] 323 |     expander.set_icon_name(Some("view-grid-symbolic"));
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/app_details.rs:241:13
[INFO] [stdout]     |
[INFO] [stdout] 241 |         row.set_icon_name(Some("network-workgroup-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/app_details.rs:323:14
[INFO] [stdout]     |
[INFO] [stdout] 323 |     expander.set_icon_name(Some("view-grid-symbolic"));
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/vm_details.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     row.set_icon_name(Some(if is_running {
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/vm_details.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |         row.set_icon_name(Some("dialog-information-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/vm_details.rs:256:9
[INFO] [stdout]     |
[INFO] [stdout] 256 |     row.set_icon_name(Some("utilities-terminal-symbolic"));
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/vm_details.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     row.set_icon_name(Some(if is_running {
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/vm_details.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |         row.set_icon_name(Some("dialog-information-symbolic"));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/vm_details.rs:256:9
[INFO] [stdout]     |
[INFO] [stdout] 256 |     row.set_icon_name(Some("utilities-terminal-symbolic"));
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |     no_sel_row.set_icon_name(Some("dialog-information-symbolic"));
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:590:18
[INFO] [stdout]     |
[INFO] [stdout] 590 |         expander.set_icon_name(Some(icon_name));
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:642:13
[INFO] [stdout]     |
[INFO] [stdout] 642 |         row.set_icon_name(Some(icon_name));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:712:24
[INFO] [stdout]     |
[INFO] [stdout] 712 |         child_expander.set_icon_name(Some(icon_name));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:764:13
[INFO] [stdout]     |
[INFO] [stdout] 764 |         row.set_icon_name(Some(icon_name));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |     no_sel_row.set_icon_name(Some("dialog-information-symbolic"));
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/container_info.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     row.set_icon_name(Some(if is_running {
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:590:18
[INFO] [stdout]     |
[INFO] [stdout] 590 |         expander.set_icon_name(Some(icon_name));
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:642:13
[INFO] [stdout]     |
[INFO] [stdout] 642 |         row.set_icon_name(Some(icon_name));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ExpanderRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:712:24
[INFO] [stdout]     |
[INFO] [stdout] 712 |         child_expander.set_icon_name(Some(icon_name));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/datasets.rs:764:13
[INFO] [stdout]     |
[INFO] [stdout] 764 |         row.set_icon_name(Some(icon_name));
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `libadwaita::prelude::ActionRowExt::set_icon_name`: Since 1.3
[INFO] [stdout]    --> ui/src/pages/container_info.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     row.set_icon_name(Some(if is_running {
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plotters::prelude`
[INFO] [stdout]  --> ui/src/pages/performance.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use plotters::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libadwaita::prelude`
[INFO] [stdout]  --> ui/src/pages/vms.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use libadwaita::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libadwaita::prelude`
[INFO] [stdout]   --> ui/src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use libadwaita::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nav_stack`
[INFO] [stdout]    --> ui/src/pages/home.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 304 |     nav_stack: &Stack,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nav_stack`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]    --> ui/src/pages/home.rs:305:5
[INFO] [stdout]     |
[INFO] [stdout] 305 |     window: &ApplicationWindow,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> ui/src/pages/home.rs:306:5
[INFO] [stdout]     |
[INFO] [stdout] 306 |     state: &AppState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool_name`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let pool_name = pool.name.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pool_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scrub_state`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     scrub_state: Arc<Mutex<Option<PoolScrubQueryResponse>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrub_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:623:34
[INFO] [stdout]     |
[INFO] [stdout] 623 |                         let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plotters::prelude`
[INFO] [stdout]  --> ui/src/pages/performance.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use plotters::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:599:34
[INFO] [stdout]     |
[INFO] [stdout] 599 |                         let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libadwaita::prelude`
[INFO] [stdout]  --> ui/src/pages/vms.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use libadwaita::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libadwaita::prelude`
[INFO] [stdout]   --> ui/src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use libadwaita::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:792:22
[INFO] [stdout]     |
[INFO] [stdout] 792 |             let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                      ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nav_stack`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:654:5
[INFO] [stdout]     |
[INFO] [stdout] 654 |     nav_stack: &Stack,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nav_stack`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scrub_state`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:655:5
[INFO] [stdout]     |
[INFO] [stdout] 655 |     scrub_state: Arc<Mutex<Option<PoolScrubQueryResponse>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrub_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enabled_switch`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:712:9
[INFO] [stdout]     |
[INFO] [stdout] 712 |     let enabled_switch = SwitchRow::builder()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled_switch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `has_items` is never read
[INFO] [stdout]    --> ui/src/pages/share_info.rs:407:25
[INFO] [stdout]     |
[INFO] [stdout] 407 |     let mut has_items = false;
[INFO] [stdout]     |                         ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 412 |     has_items = true;
[INFO] [stdout]     |     ---------------- `has_items` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nav_stack`
[INFO] [stdout]    --> ui/src/pages/home.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 304 |     nav_stack: &Stack,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nav_stack`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]    --> ui/src/pages/home.rs:305:5
[INFO] [stdout]     |
[INFO] [stdout] 305 |     window: &ApplicationWindow,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> ui/src/pages/home.rs:306:5
[INFO] [stdout]     |
[INFO] [stdout] 306 |     state: &AppState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pill_bar`
[INFO] [stdout]    --> ui/src/pages/performance.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |     let pill_bar = GBox::builder()
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pill_bar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_memory`
[INFO] [stdout]    --> ui/src/pages/performance.rs:552:5
[INFO] [stdout]     |
[INFO] [stdout] 552 |     is_memory: bool,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool_name`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let pool_name = pool.name.clone();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pool_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scrub_state`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     scrub_state: Arc<Mutex<Option<PoolScrubQueryResponse>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrub_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:623:34
[INFO] [stdout]     |
[INFO] [stdout] 623 |                         let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:599:34
[INFO] [stdout]     |
[INFO] [stdout] 599 |                         let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:792:22
[INFO] [stdout]     |
[INFO] [stdout] 792 |             let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                      ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nav_stack`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:654:5
[INFO] [stdout]     |
[INFO] [stdout] 654 |     nav_stack: &Stack,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nav_stack`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scrub_state`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:655:5
[INFO] [stdout]     |
[INFO] [stdout] 655 |     scrub_state: Arc<Mutex<Option<PoolScrubQueryResponse>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrub_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enabled_switch`
[INFO] [stdout]    --> ui/src/pages/pool_details.rs:712:9
[INFO] [stdout]     |
[INFO] [stdout] 712 |     let enabled_switch = SwitchRow::builder()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled_switch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `has_items` is never read
[INFO] [stdout]    --> ui/src/pages/share_info.rs:407:25
[INFO] [stdout]     |
[INFO] [stdout] 407 |     let mut has_items = false;
[INFO] [stdout]     |                         ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 412 |     has_items = true;
[INFO] [stdout]     |     ---------------- `has_items` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scroll`
[INFO] [stdout]    --> ui/src/pages/apps.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let scroll = ScrolledWindow::builder()
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_scroll`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> ui/src/pages/apps.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 330 |     let value = refresh_btn.clone();
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pill_bar`
[INFO] [stdout]    --> ui/src/pages/performance.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |     let pill_bar = GBox::builder()
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pill_bar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_memory`
[INFO] [stdout]    --> ui/src/pages/performance.rs:552:5
[INFO] [stdout]     |
[INFO] [stdout] 552 |     is_memory: bool,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/apps.rs:945:22
[INFO] [stdout]     |
[INFO] [stdout] 945 |             let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                      ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]     --> ui/src/pages/apps.rs:1014:38
[INFO] [stdout]      |
[INFO] [stdout] 1014 | ...                   let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]      |                                ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `banner`
[INFO] [stdout]    --> ui/src/pages/app_config.rs:127:23
[INFO] [stdout]     |
[INFO] [stdout] 127 |             #[strong] banner,
[INFO] [stdout]     |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_banner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scroll`
[INFO] [stdout]    --> ui/src/pages/apps.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let scroll = ScrolledWindow::builder()
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_scroll`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> ui/src/pages/apps.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 330 |     let value = refresh_btn.clone();
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> ui/src/pages/apps.rs:945:22
[INFO] [stdout]     |
[INFO] [stdout] 945 |             let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]     |                      ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]     --> ui/src/pages/apps.rs:1014:38
[INFO] [stdout]      |
[INFO] [stdout] 1014 | ...                   let (tx, rx) = async_channel::unbounded::<()>();
[INFO] [stdout]      |                                ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `banner`
[INFO] [stdout]    --> ui/src/pages/app_config.rs:127:23
[INFO] [stdout]     |
[INFO] [stdout] 127 |             #[strong] banner,
[INFO] [stdout]     |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_banner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:188:21
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 let s = state2.clone();
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vm_id`
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     vm_id: u32,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_vm_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctrl_name`
[INFO] [stdout]    --> ui/src/pages/vm_device_create.rs:529:25
[INFO] [stdout]     |
[INFO] [stdout] 529 |                     let ctrl_name = usb_ctrl_row.selected_item()
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ctrl_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state2`
[INFO] [stdout]    --> ui/src/pages/vm_device_create.rs:161:13
[INFO] [stdout]     |
[INFO] [stdout] 161 |         let state2 = state.clone();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_state2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:188:21
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 let s = state2.clone();
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vm_id`
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     vm_id: u32,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_vm_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctrl_name`
[INFO] [stdout]    --> ui/src/pages/vm_device_create.rs:529:25
[INFO] [stdout]     |
[INFO] [stdout] 529 |                     let ctrl_name = usb_ctrl_row.selected_item()
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ctrl_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state2`
[INFO] [stdout]    --> ui/src/pages/vm_device_create.rs:161:13
[INFO] [stdout]     |
[INFO] [stdout] 161 |         let state2 = state.clone();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_state2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> ui/src/pages/container_device_add.rs:247:17
[INFO] [stdout]     |
[INFO] [stdout] 247 |             let mut cache = cache.borrow_mut();
[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: `image_labels`
[INFO] [stdout]    --> ui/src/pages/container_create.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |     let image_labels: Rc<RefCell<Vec<String>>> = Rc::new(RefCell::new(Vec::new()));
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_labels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> ui/src/pages/container_device_add.rs:247:17
[INFO] [stdout]     |
[INFO] [stdout] 247 |             let mut cache = cache.borrow_mut();
[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: `server_url`
[INFO] [stdout]    --> ui/src/app.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let server_url = match prefs.server_url {
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_server_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image_labels`
[INFO] [stdout]    --> ui/src/pages/container_create.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |     let image_labels: Rc<RefCell<Vec<String>>> = Rc::new(RefCell::new(Vec::new()));
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_labels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `disks` is never read
[INFO] [stdout]   --> ui/src/pages/home.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct HomeData {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub disks: Vec<DiskDetails>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HomeData` has a derived impl for the trait `Clone`, but this is 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 `section_label` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:314:4
[INFO] [stdout]     |
[INFO] [stdout] 314 | fn section_label(text: &str) -> gtk4::Label {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `performance_card` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:573:4
[INFO] [stdout]     |
[INFO] [stdout] 573 | fn performance_card(nav_stack: &Stack, state: &AppState) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `storage_pools_section` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:610:4
[INFO] [stdout]     |
[INFO] [stdout] 610 | fn storage_pools_section(data: &HomeData, nav_stack: &Stack, state: &AppState) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pool_card` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:639:4
[INFO] [stdout]     |
[INFO] [stdout] 639 | fn pool_card(pool: &Pool, nav_stack: &Stack, state: &AppState) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mini_stat` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:765:4
[INFO] [stdout]     |
[INFO] [stdout] 765 | fn mini_stat(label: &str, value: &str) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disks_card` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:785:4
[INFO] [stdout]     |
[INFO] [stdout] 785 | fn disks_card(data: &HomeData, nav_stack: &Stack) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrubState` is never constructed
[INFO] [stdout]   --> ui/src/pages/pool_details.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct ScrubState {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `graph_name` is never read
[INFO] [stdout]   --> ui/src/pages/performance.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct MetricDef {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] 59 |     graph_name: ReportingGraphName,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> ui/src/pages/shares.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum SharesLoad {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] 27 |     Success(SharesData),
[INFO] [stdout] 28 |     Error(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cores`, `threads`, and `cpu_mode` are never read
[INFO] [stdout]   --> ui/src/pages/vms.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct VmEntry {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub cores: Option<i32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 30 |     #[serde(default)]
[INFO] [stdout] 31 |     pub threads: Option<i32>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub cpu_mode: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VmEntry` 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: fields `pid` and `domain_state` are never read
[INFO] [stdout]   --> ui/src/pages/vms.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct VmRuntimeState {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 47 |     pub state: String,
[INFO] [stdout] 48 |     pub pid: Option<i32>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 49 |     pub domain_state: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VmRuntimeState` 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: function `show_edit_device_dialog` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:389:4
[INFO] [stdout]     |
[INFO] [stdout] 389 | fn show_edit_device_dialog(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_readonly_notice` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn show_readonly_notice(attrs: DeviceAttributes) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_disk_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:411:4
[INFO] [stdout]     |
[INFO] [stdout] 411 | fn show_disk_edit(state: AppState, device_id: u32, current: VMDiskDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_nic_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn show_nic_edit(state: AppState, device_id: u32, current: VMNICDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_display_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:543:4
[INFO] [stdout]     |
[INFO] [stdout] 543 | fn show_display_edit(state: AppState, device_id: u32, current: VMDisplayDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_cdrom_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:601:4
[INFO] [stdout]     |
[INFO] [stdout] 601 | fn show_cdrom_edit(state: AppState, device_id: u32, current: VMCDROMDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `submit_device_update` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:622:4
[INFO] [stdout]     |
[INFO] [stdout] 622 | fn submit_device_update(state: AppState, device_id: u32, attrs: DeviceAttributes, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_add_device_dialog` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:642:4
[INFO] [stdout]     |
[INFO] [stdout] 642 | fn show_add_device_dialog(_state: AppState, _vm_id: u32, _reload: Rc<dyn Fn()>, _banner: Banner) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `status` and `root_disk_size` are never read
[INFO] [stdout]   --> ui/src/pages/containers.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ContainerEntry {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub status: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub root_disk_size: Option<i32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ContainerEntry` 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: variant `Urgent` is never constructed
[INFO] [stdout]  --> ui/src/notifications.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum NotifyPriority {
[INFO] [stdout]   |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9 |     Urgent,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `NotifyPriority` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `withdraw` is never used
[INFO] [stdout]   --> ui/src/notifications.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn withdraw(app: &Application, id: &str) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `server_url`
[INFO] [stdout]    --> ui/src/app.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let server_url = match prefs.server_url {
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_server_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> ui/src/pages/performance.rs:640:9
[INFO] [stdout]     |
[INFO] [stdout] 640 |         cr.save();
[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] 640 |         let _ = cr.save();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> ui/src/pages/performance.rs:666:9
[INFO] [stdout]     |
[INFO] [stdout] 666 |         cr.restore();
[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] 666 |         let _ = cr.restore();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `disks` is never read
[INFO] [stdout]   --> ui/src/pages/home.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct HomeData {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub disks: Vec<DiskDetails>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HomeData` has a derived impl for the trait `Clone`, but this is 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 `section_label` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:314:4
[INFO] [stdout]     |
[INFO] [stdout] 314 | fn section_label(text: &str) -> gtk4::Label {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `performance_card` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:573:4
[INFO] [stdout]     |
[INFO] [stdout] 573 | fn performance_card(nav_stack: &Stack, state: &AppState) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `storage_pools_section` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:610:4
[INFO] [stdout]     |
[INFO] [stdout] 610 | fn storage_pools_section(data: &HomeData, nav_stack: &Stack, state: &AppState) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pool_card` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:639:4
[INFO] [stdout]     |
[INFO] [stdout] 639 | fn pool_card(pool: &Pool, nav_stack: &Stack, state: &AppState) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mini_stat` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:765:4
[INFO] [stdout]     |
[INFO] [stdout] 765 | fn mini_stat(label: &str, value: &str) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disks_card` is never used
[INFO] [stdout]    --> ui/src/pages/home.rs:785:4
[INFO] [stdout]     |
[INFO] [stdout] 785 | fn disks_card(data: &HomeData, nav_stack: &Stack) -> gtk4::Box {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrubState` is never constructed
[INFO] [stdout]   --> ui/src/pages/pool_details.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct ScrubState {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `graph_name` is never read
[INFO] [stdout]   --> ui/src/pages/performance.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct MetricDef {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] 59 |     graph_name: ReportingGraphName,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> ui/src/pages/shares.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum SharesLoad {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] 27 |     Success(SharesData),
[INFO] [stdout] 28 |     Error(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cores`, `threads`, and `cpu_mode` are never read
[INFO] [stdout]   --> ui/src/pages/vms.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct VmEntry {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub cores: Option<i32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 30 |     #[serde(default)]
[INFO] [stdout] 31 |     pub threads: Option<i32>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub cpu_mode: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VmEntry` 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: fields `pid` and `domain_state` are never read
[INFO] [stdout]   --> ui/src/pages/vms.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct VmRuntimeState {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 47 |     pub state: String,
[INFO] [stdout] 48 |     pub pid: Option<i32>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 49 |     pub domain_state: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VmRuntimeState` 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: function `show_edit_device_dialog` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:389:4
[INFO] [stdout]     |
[INFO] [stdout] 389 | fn show_edit_device_dialog(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_readonly_notice` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:403:4
[INFO] [stdout]     |
[INFO] [stdout] 403 | fn show_readonly_notice(attrs: DeviceAttributes) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_disk_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:411:4
[INFO] [stdout]     |
[INFO] [stdout] 411 | fn show_disk_edit(state: AppState, device_id: u32, current: VMDiskDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_nic_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn show_nic_edit(state: AppState, device_id: u32, current: VMNICDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_display_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:543:4
[INFO] [stdout]     |
[INFO] [stdout] 543 | fn show_display_edit(state: AppState, device_id: u32, current: VMDisplayDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_cdrom_edit` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:601:4
[INFO] [stdout]     |
[INFO] [stdout] 601 | fn show_cdrom_edit(state: AppState, device_id: u32, current: VMCDROMDevice, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `submit_device_update` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:622:4
[INFO] [stdout]     |
[INFO] [stdout] 622 | fn submit_device_update(state: AppState, device_id: u32, attrs: DeviceAttributes, on_saved: Rc<dyn Fn()>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_add_device_dialog` is never used
[INFO] [stdout]    --> ui/src/pages/vm_devices_edit.rs:642:4
[INFO] [stdout]     |
[INFO] [stdout] 642 | fn show_add_device_dialog(_state: AppState, _vm_id: u32, _reload: Rc<dyn Fn()>, _banner: Banner) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `status` and `root_disk_size` are never read
[INFO] [stdout]   --> ui/src/pages/containers.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ContainerEntry {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub status: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub root_disk_size: Option<i32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ContainerEntry` 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: variant `Urgent` is never constructed
[INFO] [stdout]  --> ui/src/notifications.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum NotifyPriority {
[INFO] [stdout]   |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9 |     Urgent,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `NotifyPriority` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `withdraw` is never used
[INFO] [stdout]   --> ui/src/notifications.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn withdraw(app: &Application, id: &str) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> ui/src/pages/performance.rs:640:9
[INFO] [stdout]     |
[INFO] [stdout] 640 |         cr.save();
[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] 640 |         let _ = cr.save();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> ui/src/pages/performance.rs:666:9
[INFO] [stdout]     |
[INFO] [stdout] 666 |         cr.restore();
[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] 666 |         let _ = cr.restore();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `oneshot`
[INFO] [stderr]   --> api/Cargo.toml:18:1
[INFO] [stderr]    |
[INFO] [stderr] 18 | oneshot = "0.2.1"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `oneshot`
[INFO] [stderr] warning: unused dependency `webpki`
[INFO] [stderr]   --> api/Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | webpki = "0.22"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `webpki`
[INFO] [stderr] warning: `api` (manifest) generated 2 warnings
[INFO] [stderr] warning: unused dependency `glib-build-tools`
[INFO] [stderr]   --> ui/Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | glib-build-tools = "0.22.8"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `glib-build-tools`
[INFO] [stderr] warning: unused dependency `home`
[INFO] [stderr]   --> ui/Cargo.toml:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | home = "0.5.12"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `home`
[INFO] [stderr] warning: `ui` (manifest) generated 2 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 18s
[INFO] running `Command { std: "docker" "inspect" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c", kill_on_drop: false }`
[INFO] [stdout] 07d8d3905ee12914df5fd702181f2f7c37f714fa49b6f4bedda3dac599691d5c
