[INFO] cloning repository https://github.com/DreamPrism/rusty-tsugu [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/DreamPrism/rusty-tsugu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamPrism%2Frusty-tsugu", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamPrism%2Frusty-tsugu'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 30fdb40aa9a60cc4913fd26bc7d71eb3ba480408 [INFO] checking DreamPrism/rusty-tsugu against master#683dd08db5808c41baceef49368fc82a6c4767bb for pr-149137 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamPrism%2Frusty-tsugu" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/DreamPrism/rusty-tsugu [INFO] finished tweaking git repo https://github.com/DreamPrism/rusty-tsugu [INFO] tweaked toml for git repo https://github.com/DreamPrism/rusty-tsugu written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/DreamPrism/rusty-tsugu on toolchain 683dd08db5808c41baceef49368fc82a6c4767bb [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+683dd08db5808c41baceef49368fc82a6c4767bb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/DreamPrism/rusty-tsugu 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" "+683dd08db5808c41baceef49368fc82a6c4767bb" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded unicode-bidi-mirroring v0.3.0 [INFO] [stderr] Downloaded data-url v0.3.2 [INFO] [stderr] Downloaded unicode-ccc v0.3.0 [INFO] [stderr] Downloaded resolv-conf v0.7.5 [INFO] [stderr] Downloaded windows-core v0.62.1 [INFO] [stderr] Downloaded validator_derive v0.18.2 [INFO] [stderr] Downloaded validator v0.18.1 [INFO] [stderr] Downloaded fontdb v0.22.0 [INFO] [stderr] Downloaded resvg v0.44.0 [INFO] [stderr] Downloaded imageproc v0.25.0 [INFO] [stderr] Downloaded bson v2.15.0 [INFO] [stderr] Downloaded usvg v0.44.0 [INFO] [stderr] Downloaded kurbo v0.11.3 [INFO] [stderr] Downloaded moxcms v0.7.5 [INFO] [stderr] Downloaded rustybuzz v0.18.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+683dd08db5808c41baceef49368fc82a6c4767bb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3b25bed340873d8be689a7a014d9cf6e8e62b8e969f86fced29f7e7ca701be83 [INFO] running `Command { std: "docker" "start" "-a" "3b25bed340873d8be689a7a014d9cf6e8e62b8e969f86fced29f7e7ca701be83", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3b25bed340873d8be689a7a014d9cf6e8e62b8e969f86fced29f7e7ca701be83", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3b25bed340873d8be689a7a014d9cf6e8e62b8e969f86fced29f7e7ca701be83", kill_on_drop: false }` [INFO] [stdout] 3b25bed340873d8be689a7a014d9cf6e8e62b8e969f86fced29f7e7ca701be83 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+683dd08db5808c41baceef49368fc82a6c4767bb" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2b0c576bb91a1034b0e9f5250cc6cdb6dd5b31788699d40547aec59dd2890b48 [INFO] running `Command { std: "docker" "start" "-a" "2b0c576bb91a1034b0e9f5250cc6cdb6dd5b31788699d40547aec59dd2890b48", kill_on_drop: false }` [INFO] [stderr] Compiling find-msvc-tools v0.1.2 [INFO] [stderr] Compiling libc v0.2.176 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking signal-hook-registry v1.4.6 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking bytemuck v1.23.2 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking getrandom v0.3.3 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking unicode-normalization v0.1.24 [INFO] [stderr] Compiling time-macros v0.2.24 [INFO] [stderr] Checking serde_json v1.0.145 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking core_maths v0.1.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Compiling slotmap v1.0.7 [INFO] [stderr] Checking rayon-core v1.13.0 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Compiling bytes v1.10.1 [INFO] [stderr] Compiling tracing-core v0.1.34 [INFO] [stderr] Checking strict-num v0.1.1 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking ttf-parser v0.24.1 [INFO] [stderr] Checking rgb v0.8.52 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Checking safe_arch v0.7.4 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Checking regex-automata v0.4.11 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking time v0.3.44 [INFO] [stderr] Compiling bytestring v1.5.0 [INFO] [stderr] Compiling matrixmultiply v0.3.10 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Checking semver-parser v0.7.0 [INFO] [stderr] Checking roxmltree v0.20.0 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking event-listener v5.4.1 [INFO] [stderr] Checking tiny-skia-path v0.11.4 [INFO] [stderr] Checking semver v0.9.0 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking wide v0.7.33 [INFO] [stderr] Compiling cc v1.2.39 [INFO] [stderr] Compiling rustc_version_runtime v0.2.1 [INFO] [stderr] Checking fontconfig-parser v0.5.8 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking kurbo v0.11.3 [INFO] [stderr] Checking pxfm v0.1.24 [INFO] [stderr] Checking memmap2 v0.9.8 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking ab_glyph_rasterizer v0.1.10 [INFO] [stderr] Checking unicode-bidi-mirroring v0.3.0 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Checking unicode-ccc v0.3.0 [INFO] [stderr] Checking unicode-script v0.5.7 [INFO] [stderr] Checking ttf-parser v0.25.1 [INFO] [stderr] Checking exr v1.73.0 [INFO] [stderr] Checking svgtypes v0.15.3 [INFO] [stderr] Checking event-listener-strategy v0.5.4 [INFO] [stderr] Checking rustc_version v0.2.3 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking png v0.18.0 [INFO] [stderr] Checking serde_bytes v0.11.19 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking rustybuzz v0.18.0 [INFO] [stderr] Checking cookie v0.16.2 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Compiling zstd-sys v2.0.16+zstd.1.5.7 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Checking fontdb v0.22.0 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Checking simplecss v0.2.2 [INFO] [stderr] Checking data-url v0.3.2 [INFO] [stderr] Compiling moka v0.12.11 [INFO] [stderr] Compiling darling_core v0.13.4 [INFO] [stderr] Checking simba v0.8.1 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking iana-time-zone v0.1.64 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking unicode-vo v0.1.0 [INFO] [stderr] Checking regex v1.11.3 [INFO] [stderr] Checking pico-args v0.5.0 [INFO] [stderr] Checking imagesize v0.13.0 [INFO] [stderr] Compiling actix-router v0.5.3 [INFO] [stderr] Checking xmlwriter v0.1.0 [INFO] [stderr] Checking resolv-conf v0.7.5 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking owned_ttf_parser v0.15.2 [INFO] [stderr] Checking num v0.4.3 [INFO] [stderr] Checking tiny-skia v0.11.4 [INFO] [stderr] Checking async-lock v3.4.1 [INFO] [stderr] Checking owned_ttf_parser v0.25.1 [INFO] [stderr] Checking rand_distr v0.4.3 [INFO] [stderr] Checking ab_glyph v0.2.32 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking moxcms v0.7.5 [INFO] [stderr] Checking stringprep v0.1.5 [INFO] [stderr] Checking image-webp v0.1.3 [INFO] [stderr] Checking sha-1 v0.10.1 [INFO] [stderr] Checking pbkdf2 v0.11.0 [INFO] [stderr] Checking md-5 v0.10.6 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking tagptr v0.2.0 [INFO] [stderr] Compiling enum-as-inner v0.4.0 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Compiling typed-builder v0.10.0 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking rusttype v0.9.3 [INFO] [stderr] Checking usvg v0.44.0 [INFO] [stderr] Compiling darling_macro v0.13.4 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling darling v0.13.4 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling serde_with_macros v1.5.2 [INFO] [stderr] Checking resvg v0.44.0 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling equator-macro v0.4.2 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling profiling-procmacros v1.0.17 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking profiling v1.0.17 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Compiling fax_derive v0.2.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking equator v0.4.2 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking aligned-vec v0.6.4 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking fax v0.2.6 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking v_frame v0.3.9 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking zerovec v0.11.4 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking av1-grain v0.2.4 [INFO] [stderr] Checking tiff v0.10.3 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling actix-web-codegen v4.3.0 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Compiling actix-macros v0.2.4 [INFO] [stderr] Checking nalgebra v0.32.6 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling derive_more v0.99.20 [INFO] [stderr] Compiling validator_derive v0.18.2 [INFO] [stderr] Checking tracing-subscriber v0.3.20 [INFO] [stderr] Checking rav1e v0.7.1 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.3 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking uuid v1.18.1 [INFO] [stderr] Checking serde_with v1.14.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking bson v2.15.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking tokio-util v0.7.16 [INFO] [stderr] Checking actix-rt v2.11.0 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking actix-server v2.6.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking h2 v0.3.27 [INFO] [stderr] Checking actix-codec v0.5.2 [INFO] [stderr] Checking trust-dns-proto v0.21.2 [INFO] [stderr] Checking validator v0.18.1 [INFO] [stderr] Checking ravif v0.11.20 [INFO] [stderr] Checking trust-dns-resolver v0.21.2 [INFO] [stderr] Checking image v0.25.8 [INFO] [stderr] Checking mongodb v2.8.2 [INFO] [stderr] Checking hyper v1.7.0 [INFO] [stderr] Checking actix-http v3.11.1 [INFO] [stderr] Checking hyper-util v0.1.17 [INFO] [stderr] Checking imageproc v0.25.0 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.12.23 [INFO] [stderr] Checking actix-web v4.11.0 [INFO] [stderr] Checking actix-cors v0.7.1 [INFO] [stderr] Checking rusty-tsugu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/models/server.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | use bytes::Bytes; [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: `bytes::Bytes` [INFO] [stdout] --> src/models/server.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | use bytes::Bytes; [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: `crate::models::Server` [INFO] [stdout] --> src/types/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::models::Server; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/fuzzy_search/engine.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `image::Rgba` [INFO] [stdout] --> src/drawing/text.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use image::Rgba; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `apply_opacity` [INFO] [stdout] --> src/drawing/rect.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::drawing::utils::{parse_color, apply_opacity}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RgbaImage` [INFO] [stdout] --> src/drawing/utils.rs:1:55 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, GenericImageView, imageops, RgbaImage}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/drawing/card.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `imageops` [INFO] [stdout] --> src/drawing/components/difficulty.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{imageops, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/components/difficulty.rs:7:46 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::types::song::{DifficultyId, Song, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GenericImageView` [INFO] [stdout] --> src/drawing/components/sdchara.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use image::{GenericImageView, imageops}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_horizontal` [INFO] [stdout] --> src/drawing/components/song.rs:6:43 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::utils::{resize_exact, stack_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage`, `RgbaImage`, `Rgba`, and `imageops` [INFO] [stdout] --> src/drawing/components/song.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use image::{imageops, DynamicImage, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage` and `ImageBuffer` [INFO] [stdout] --> src/drawing/chart.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, Rgba, RgbaImage, ImageBuffer}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `draw_text_mut` [INFO] [stdout] --> src/drawing/chart.rs:2:71 [INFO] [stdout] | [INFO] [stdout] 2 | use imageproc::drawing::{draw_line_segment_mut, draw_filled_rect_mut, draw_text_mut}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Font` and `Scale` [INFO] [stdout] --> src/drawing/chart.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use rusttype::{Font, Scale}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/chart.rs:9:64 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::types::song::{Song, DifficultyId, DIFFICULTY_NAMES, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value` [INFO] [stdout] --> src/view/song_chart.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use serde_json::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::chart::ChartRenderer` [INFO] [stdout] --> src/view/song_chart.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::drawing::chart::ChartRenderer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::chart::ChartData` [INFO] [stdout] --> src/view/song_chart.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::types::chart::ChartData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::canvas::Canvas` [INFO] [stdout] --> src/view/song_list.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::drawing::canvas::Canvas; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_image_horizontal` [INFO] [stdout] --> src/view/song_list.rs:6:54 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::components::utils::{stack_image, stack_image_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::Server` [INFO] [stdout] --> src/types/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::models::Server; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/fuzzy_search/engine.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `image::Rgba` [INFO] [stdout] --> src/drawing/text.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use image::Rgba; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `apply_opacity` [INFO] [stdout] --> src/drawing/rect.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::drawing::utils::{parse_color, apply_opacity}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RgbaImage` [INFO] [stdout] --> src/drawing/utils.rs:1:55 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, GenericImageView, imageops, RgbaImage}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/drawing/card.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `imageops` [INFO] [stdout] --> src/drawing/components/difficulty.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{imageops, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/components/difficulty.rs:7:46 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::types::song::{DifficultyId, Song, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GenericImageView` [INFO] [stdout] --> src/drawing/components/sdchara.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use image::{GenericImageView, imageops}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_horizontal` [INFO] [stdout] --> src/drawing/components/song.rs:6:43 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::utils::{resize_exact, stack_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage`, `RgbaImage`, `Rgba`, and `imageops` [INFO] [stdout] --> src/drawing/components/song.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use image::{imageops, DynamicImage, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage` and `ImageBuffer` [INFO] [stdout] --> src/drawing/chart.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, Rgba, RgbaImage, ImageBuffer}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `draw_text_mut` [INFO] [stdout] --> src/drawing/chart.rs:2:71 [INFO] [stdout] | [INFO] [stdout] 2 | use imageproc::drawing::{draw_line_segment_mut, draw_filled_rect_mut, draw_text_mut}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Font` and `Scale` [INFO] [stdout] --> src/drawing/chart.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use rusttype::{Font, Scale}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/chart.rs:9:64 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::types::song::{Song, DifficultyId, DIFFICULTY_NAMES, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value` [INFO] [stdout] --> src/view/song_chart.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use serde_json::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::chart::ChartRenderer` [INFO] [stdout] --> src/view/song_chart.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::drawing::chart::ChartRenderer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::chart::ChartData` [INFO] [stdout] --> src/view/song_chart.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::types::chart::ChartData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::canvas::Canvas` [INFO] [stdout] --> src/view/song_list.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::drawing::canvas::Canvas; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_image_horizontal` [INFO] [stdout] --> src/view/song_list.rs:6:54 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::components::utils::{stack_image, stack_image_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:31:20 [INFO] [stdout] | [INFO] [stdout] 31 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:2:16 [INFO] [stdout] | [INFO] [stdout] 2 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:14:19 [INFO] [stdout] | [INFO] [stdout] 14 | let img = ImageReader::new(Cursor::new(data)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:31:20 [INFO] [stdout] | [INFO] [stdout] 31 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:2:16 [INFO] [stdout] | [INFO] [stdout] 2 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:14:19 [INFO] [stdout] | [INFO] [stdout] 14 | let img = ImageReader::new(Cursor::new(data)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event_id` [INFO] [stdout] --> src/downloader/service.rs:233:9 [INFO] [stdout] | [INFO] [stdout] 233 | event_id: u32, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event_id` [INFO] [stdout] --> src/downloader/service.rs:233:9 [INFO] [stdout] | [INFO] [stdout] 233 | event_id: u32, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `glyph` [INFO] [stdout] --> src/drawing/text.rs:223:13 [INFO] [stdout] | [INFO] [stdout] 223 | let glyph = glyph_id.with_scale(scale.x); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_glyph` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [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: `new_line` [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `glyph` [INFO] [stdout] --> src/drawing/text.rs:223:13 [INFO] [stdout] | [INFO] [stdout] 223 | let glyph = glyph_id.with_scale(scale.x); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_glyph` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [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: `new_line` [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/drawing/components/stat.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `server` [INFO] [stdout] --> src/drawing/chart.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | server: Server, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_server` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/drawing/chart.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | song_id: u32, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `title` [INFO] [stdout] --> src/drawing/chart.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | title: &str, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_title` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/drawing/components/stat.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `level` [INFO] [stdout] --> src/drawing/chart.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | level: u32, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `canvas` [INFO] [stdout] --> src/drawing/chart.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | canvas: &mut RgbaImage, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/drawing/chart.rs:415:17 [INFO] [stdout] | [INFO] [stdout] 415 | let x = self.config.info_area_width + draw_col * original_width + self.config.block_distance; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `y` [INFO] [stdout] --> src/drawing/chart.rs:416:17 [INFO] [stdout] | [INFO] [stdout] 416 | let y = height as f32 - (i as f32 * self.config.height_per_second as f32) % height as f32; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_y` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_width` [INFO] [stdout] --> src/drawing/chart.rs:432:13 [INFO] [stdout] | [INFO] [stdout] 432 | let original_width = self.config.block_distance * 2 + self.config.lane_width * 7; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `server` [INFO] [stdout] --> src/drawing/chart.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | server: Server, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_server` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/drawing/chart.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | song_id: u32, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `title` [INFO] [stdout] --> src/drawing/chart.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | title: &str, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_title` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `level` [INFO] [stdout] --> src/drawing/chart.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | level: u32, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `canvas` [INFO] [stdout] --> src/drawing/chart.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | canvas: &mut RgbaImage, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/drawing/chart.rs:415:17 [INFO] [stdout] | [INFO] [stdout] 415 | let x = self.config.info_area_width + draw_col * original_width + self.config.block_distance; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `y` [INFO] [stdout] --> src/drawing/chart.rs:416:17 [INFO] [stdout] | [INFO] [stdout] 416 | let y = height as f32 - (i as f32 * self.config.height_per_second as f32) % height as f32; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_y` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_width` [INFO] [stdout] --> src/drawing/chart.rs:432:13 [INFO] [stdout] | [INFO] [stdout] 432 | let original_width = self.config.block_distance * 2 + self.config.lane_width * 7; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/card_list.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 214 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/song_detail.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/card_list.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 214 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/song_detail.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/view/song_list.rs:82:10 [INFO] [stdout] | [INFO] [stdout] 82 | for (song_id, song) in &temp_song_list { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/view/song_list.rs:82:10 [INFO] [stdout] | [INFO] [stdout] 82 | for (song_id, song) in &temp_song_list { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number` is never used [INFO] [stdout] --> src/types/song.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn deserialize_string_or_number<'de, D>(deserializer: D) -> Result, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number` is never used [INFO] [stdout] --> src/types/song.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn deserialize_string_or_number<'de, D>(deserializer: D) -> Result, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `image::Rgba` [INFO] [stdout] --> src/drawing/text.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use image::Rgba; [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: `apply_opacity` [INFO] [stdout] --> src/drawing/rect.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::drawing::utils::{parse_color, apply_opacity}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RgbaImage` [INFO] [stdout] --> src/drawing/utils.rs:1:55 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, GenericImageView, imageops, RgbaImage}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/drawing/card.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `imageops` [INFO] [stdout] --> src/drawing/components/difficulty.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{imageops, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/components/difficulty.rs:7:46 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::types::song::{DifficultyId, Song, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GenericImageView` [INFO] [stdout] --> src/drawing/components/sdchara.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use image::{GenericImageView, imageops}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_horizontal` [INFO] [stdout] --> src/drawing/components/song.rs:6:43 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::utils::{resize_exact, stack_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage`, `RgbaImage`, `Rgba`, and `imageops` [INFO] [stdout] --> src/drawing/components/song.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use image::{imageops, DynamicImage, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `draw_difficulty_list`, `draw_difficulty_with_meta`, and `draw_difficulty` [INFO] [stdout] --> src/drawing/components/mod.rs:22:22 [INFO] [stdout] | [INFO] [stdout] 22 | pub use difficulty::{draw_difficulty, draw_difficulty_list, draw_difficulty_with_meta}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `draw_song_data_block` and `draw_song_in_list` [INFO] [stdout] --> src/drawing/components/mod.rs:30:16 [INFO] [stdout] | [INFO] [stdout] 30 | pub use song::{draw_song_data_block, draw_song_in_list}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage` and `ImageBuffer` [INFO] [stdout] --> src/drawing/chart.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, Rgba, RgbaImage, ImageBuffer}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `draw_text_mut` [INFO] [stdout] --> src/drawing/chart.rs:2:71 [INFO] [stdout] | [INFO] [stdout] 2 | use imageproc::drawing::{draw_line_segment_mut, draw_filled_rect_mut, draw_text_mut}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Font` and `Scale` [INFO] [stdout] --> src/drawing/chart.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use rusttype::{Font, Scale}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/chart.rs:9:64 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::types::song::{Song, DifficultyId, DIFFICULTY_NAMES, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measure_text_width` [INFO] [stdout] --> src/drawing/mod.rs:21:44 [INFO] [stdout] | [INFO] [stdout] 21 | pub use text::{draw_text, DrawTextOptions, measure_text_width, draw_text_with_images, DrawTextWithImagesOptions, ContentItem}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TextAlign` [INFO] [stdout] --> src/drawing/mod.rs:22:112 [INFO] [stdout] | [INFO] [stdout] 22 | pub use rect::{draw_rounded_rect, RoundedRectOptions, draw_rounded_rect_with_text, RoundedRectWithTextOptions, TextAlign}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DataBlockHorizontalOptions`, `ResizeImageOptions`, `TipsInListOptions`, `create_easy_bg`, `draw_datablock_horizontal`, `draw_tips_in_list`, `format_timestamp`, `resize_image`, `stack_image_horizontal`, and `stack_image` [INFO] [stdout] --> src/drawing/mod.rs:31:21 [INFO] [stdout] | [INFO] [stdout] 31 | draw_datablock, draw_datablock_horizontal, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | DataBlockOptions, DataBlockHorizontalOptions, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | draw_list, draw_list_merge, draw_list_by_server_list, draw_tips_in_list, ListOptions, TipsInListOptions, get_list_line, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | stack_image, stack_image_horizontal, resize_image, ResizeImageOptions, [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | draw_card_prefix, [INFO] [stdout] 36 | draw_time_in_list, format_timestamp, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 37 | output_final_buffer, OutputFinalOptions, create_easy_bg, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/fuzzy_search/engine.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AliasValue`, `FIELD_ALL`, `FIELD_NUMBER`, `FIELD_SONG_LEVELS`, `FuzzySearchConfig`, and `IndexEntry` [INFO] [stdout] --> src/fuzzy_search/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | FuzzySearchConfig, FuzzySearchResult, AliasValue, ValueType, IndexEntry, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 8 | FIELD_NUMBER, FIELD_RELATION, FIELD_ALL, FIELD_SONG_LEVELS, [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `extract_keywords`, `is_integer`, and `parse_query` [INFO] [stdout] --> src/fuzzy_search/mod.rs:10:18 [INFO] [stdout] | [INFO] [stdout] 10 | pub use parser::{extract_keywords, parse_query, is_integer}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value as JsonValue` [INFO] [stdout] --> src/fuzzy_search/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use serde_json::Value as JsonValue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/models/server.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/routes/search.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `attribute::Attribute` [INFO] [stdout] --> src/types/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use attribute::Attribute; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BandId` and `Band` [INFO] [stdout] --> src/types/mod.rs:14:16 [INFO] [stdout] | [INFO] [stdout] 14 | pub use band::{Band, BandId}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CharacterId`, `CharacterProfile`, and `Character` [INFO] [stdout] --> src/types/mod.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | pub use character::{Character, CharacterId, CharacterProfile}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SkillEffectType` and `SkillId` [INFO] [stdout] --> src/types/mod.rs:16:24 [INFO] [stdout] | [INFO] [stdout] 16 | pub use skill::{Skill, SkillId, SkillEffectType}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CardId`, `CardStat`, `CardType`, and `Rarity` [INFO] [stdout] --> src/types/mod.rs:17:22 [INFO] [stdout] | [INFO] [stdout] 17 | pub use card::{Card, CardId, CardStat, CardType, Rarity}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CostumeId` [INFO] [stdout] --> src/types/mod.rs:18:28 [INFO] [stdout] | [INFO] [stdout] 18 | pub use costume::{Costume, CostumeId}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DifficultyId`, `SongId`, `SongTag`, and `Song` [INFO] [stdout] --> src/types/mod.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | pub use song::{Song, SongId, DifficultyId, SongTag}; [INFO] [stdout] | ^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AttributeBonus`, `CharacterBonus`, `DoubleBonus`, `EventId`, `EventType`, and `Event` [INFO] [stdout] --> src/types/mod.rs:20:17 [INFO] [stdout] | [INFO] [stdout] 20 | pub use event::{Event, EventId, EventType, AttributeBonus, CharacterBonus, DoubleBonus}; [INFO] [stdout] | ^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::Server` [INFO] [stdout] --> src/types/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::models::Server; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value` [INFO] [stdout] --> src/view/song_chart.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use serde_json::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::chart::ChartRenderer` [INFO] [stdout] --> src/view/song_chart.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::drawing::chart::ChartRenderer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::chart::ChartData` [INFO] [stdout] --> src/view/song_chart.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::types::chart::ChartData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::canvas::Canvas` [INFO] [stdout] --> src/view/song_list.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::drawing::canvas::Canvas; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_image_horizontal` [INFO] [stdout] --> src/view/song_list.rs:6:54 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::components::utils::{stack_image, stack_image_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `song_detail::draw_song_detail` [INFO] [stdout] --> src/view/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use song_detail::draw_song_detail; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `song_list::draw_song_list` [INFO] [stdout] --> src/view/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use song_list::draw_song_list; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `image::Rgba` [INFO] [stdout] --> src/drawing/text.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use image::Rgba; [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: `apply_opacity` [INFO] [stdout] --> src/drawing/rect.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::drawing::utils::{parse_color, apply_opacity}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RgbaImage` [INFO] [stdout] --> src/drawing/utils.rs:1:55 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, GenericImageView, imageops, RgbaImage}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/drawing/card.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `imageops` [INFO] [stdout] --> src/drawing/components/difficulty.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{imageops, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/components/difficulty.rs:7:46 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::types::song::{DifficultyId, Song, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GenericImageView` [INFO] [stdout] --> src/drawing/components/sdchara.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use image::{GenericImageView, imageops}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_horizontal` [INFO] [stdout] --> src/drawing/components/song.rs:6:43 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::utils::{resize_exact, stack_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage`, `RgbaImage`, `Rgba`, and `imageops` [INFO] [stdout] --> src/drawing/components/song.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use image::{imageops, DynamicImage, Rgba, RgbaImage}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `draw_difficulty_list`, `draw_difficulty_with_meta`, and `draw_difficulty` [INFO] [stdout] --> src/drawing/components/mod.rs:22:22 [INFO] [stdout] | [INFO] [stdout] 22 | pub use difficulty::{draw_difficulty, draw_difficulty_list, draw_difficulty_with_meta}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `draw_song_data_block` and `draw_song_in_list` [INFO] [stdout] --> src/drawing/components/mod.rs:30:16 [INFO] [stdout] | [INFO] [stdout] 30 | pub use song::{draw_song_data_block, draw_song_in_list}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DynamicImage` and `ImageBuffer` [INFO] [stdout] --> src/drawing/chart.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use image::{DynamicImage, Rgba, RgbaImage, ImageBuffer}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `draw_text_mut` [INFO] [stdout] --> src/drawing/chart.rs:2:71 [INFO] [stdout] | [INFO] [stdout] 2 | use imageproc::drawing::{draw_line_segment_mut, draw_filled_rect_mut, draw_text_mut}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Font` and `Scale` [INFO] [stdout] --> src/drawing/chart.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use rusttype::{Font, Scale}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DIFFICULTY_COLORS` [INFO] [stdout] --> src/drawing/chart.rs:9:64 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::types::song::{Song, DifficultyId, DIFFICULTY_NAMES, DIFFICULTY_COLORS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measure_text_width` [INFO] [stdout] --> src/drawing/mod.rs:21:44 [INFO] [stdout] | [INFO] [stdout] 21 | pub use text::{draw_text, DrawTextOptions, measure_text_width, draw_text_with_images, DrawTextWithImagesOptions, ContentItem}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TextAlign` [INFO] [stdout] --> src/drawing/mod.rs:22:112 [INFO] [stdout] | [INFO] [stdout] 22 | pub use rect::{draw_rounded_rect, RoundedRectOptions, draw_rounded_rect_with_text, RoundedRectWithTextOptions, TextAlign}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DataBlockHorizontalOptions`, `ResizeImageOptions`, `TipsInListOptions`, `create_easy_bg`, `draw_datablock_horizontal`, `draw_tips_in_list`, `format_timestamp`, `resize_image`, `stack_image_horizontal`, and `stack_image` [INFO] [stdout] --> src/drawing/mod.rs:31:21 [INFO] [stdout] | [INFO] [stdout] 31 | draw_datablock, draw_datablock_horizontal, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | DataBlockOptions, DataBlockHorizontalOptions, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | draw_list, draw_list_merge, draw_list_by_server_list, draw_tips_in_list, ListOptions, TipsInListOptions, get_list_line, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | stack_image, stack_image_horizontal, resize_image, ResizeImageOptions, [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | draw_card_prefix, [INFO] [stdout] 36 | draw_time_in_list, format_timestamp, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 37 | output_final_buffer, OutputFinalOptions, create_easy_bg, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/fuzzy_search/engine.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AliasValue`, `FIELD_ALL`, `FIELD_NUMBER`, `FIELD_SONG_LEVELS`, `FuzzySearchConfig`, and `IndexEntry` [INFO] [stdout] --> src/fuzzy_search/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | FuzzySearchConfig, FuzzySearchResult, AliasValue, ValueType, IndexEntry, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 8 | FIELD_NUMBER, FIELD_RELATION, FIELD_ALL, FIELD_SONG_LEVELS, [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `extract_keywords`, `is_integer`, and `parse_query` [INFO] [stdout] --> src/fuzzy_search/mod.rs:10:18 [INFO] [stdout] | [INFO] [stdout] 10 | pub use parser::{extract_keywords, parse_query, is_integer}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value as JsonValue` [INFO] [stdout] --> src/fuzzy_search/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use serde_json::Value as JsonValue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/models/server.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/routes/search.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `attribute::Attribute` [INFO] [stdout] --> src/types/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use attribute::Attribute; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BandId` and `Band` [INFO] [stdout] --> src/types/mod.rs:14:16 [INFO] [stdout] | [INFO] [stdout] 14 | pub use band::{Band, BandId}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CharacterId`, `CharacterProfile`, and `Character` [INFO] [stdout] --> src/types/mod.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | pub use character::{Character, CharacterId, CharacterProfile}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SkillEffectType` and `SkillId` [INFO] [stdout] --> src/types/mod.rs:16:24 [INFO] [stdout] | [INFO] [stdout] 16 | pub use skill::{Skill, SkillId, SkillEffectType}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CardId`, `CardStat`, `CardType`, and `Rarity` [INFO] [stdout] --> src/types/mod.rs:17:22 [INFO] [stdout] | [INFO] [stdout] 17 | pub use card::{Card, CardId, CardStat, CardType, Rarity}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CostumeId` [INFO] [stdout] --> src/types/mod.rs:18:28 [INFO] [stdout] | [INFO] [stdout] 18 | pub use costume::{Costume, CostumeId}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DifficultyId`, `SongId`, `SongTag`, and `Song` [INFO] [stdout] --> src/types/mod.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | pub use song::{Song, SongId, DifficultyId, SongTag}; [INFO] [stdout] | ^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AttributeBonus`, `CharacterBonus`, `DoubleBonus`, `EventId`, `EventType`, and `Event` [INFO] [stdout] --> src/types/mod.rs:20:17 [INFO] [stdout] | [INFO] [stdout] 20 | pub use event::{Event, EventId, EventType, AttributeBonus, CharacterBonus, DoubleBonus}; [INFO] [stdout] | ^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::Server` [INFO] [stdout] --> src/types/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::models::Server; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value` [INFO] [stdout] --> src/view/song_chart.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use serde_json::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::chart::ChartRenderer` [INFO] [stdout] --> src/view/song_chart.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::drawing::chart::ChartRenderer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::chart::ChartData` [INFO] [stdout] --> src/view/song_chart.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::types::chart::ChartData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::drawing::canvas::Canvas` [INFO] [stdout] --> src/view/song_list.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::drawing::canvas::Canvas; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack_image_horizontal` [INFO] [stdout] --> src/view/song_list.rs:6:54 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::drawing::components::utils::{stack_image, stack_image_horizontal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `song_detail::draw_song_detail` [INFO] [stdout] --> src/view/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use song_detail::draw_song_detail; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `song_list::draw_song_list` [INFO] [stdout] --> src/view/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use song_list::draw_song_list; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:31:20 [INFO] [stdout] | [INFO] [stdout] 31 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:2:16 [INFO] [stdout] | [INFO] [stdout] 2 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:14:19 [INFO] [stdout] | [INFO] [stdout] 14 | let img = ImageReader::new(Cursor::new(data)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | ImageReader::new(Cursor::new(data)).with_guessed_format().unwrap().decode().unwrap() [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/card.rs:31:20 [INFO] [stdout] | [INFO] [stdout] 31 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:2:16 [INFO] [stdout] | [INFO] [stdout] 2 | use image::io::Reader as ImageReader; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated type alias `image::io::Reader`: this type has been moved and renamed to image::ImageReader [INFO] [stdout] --> src/drawing/components/title.rs:14:19 [INFO] [stdout] | [INFO] [stdout] 14 | let img = ImageReader::new(Cursor::new(data)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event_id` [INFO] [stdout] --> src/downloader/service.rs:233:9 [INFO] [stdout] | [INFO] [stdout] 233 | event_id: u32, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `glyph` [INFO] [stdout] --> src/drawing/text.rs:223:13 [INFO] [stdout] | [INFO] [stdout] 223 | let glyph = glyph_id.with_scale(scale.x); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_glyph` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [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: `new_line` [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event_id` [INFO] [stdout] --> src/downloader/service.rs:233:9 [INFO] [stdout] | [INFO] [stdout] 233 | event_id: u32, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `glyph` [INFO] [stdout] --> src/drawing/text.rs:223:13 [INFO] [stdout] | [INFO] [stdout] 223 | let glyph = glyph_id.with_scale(scale.x); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_glyph` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [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: `new_line` [INFO] [stdout] --> src/drawing/text.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let mut new_line = || { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/drawing/components/stat.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `server` [INFO] [stdout] --> src/drawing/chart.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | server: Server, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_server` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/drawing/chart.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | song_id: u32, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `title` [INFO] [stdout] --> src/drawing/chart.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | title: &str, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_title` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `level` [INFO] [stdout] --> src/drawing/chart.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | level: u32, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `canvas` [INFO] [stdout] --> src/drawing/chart.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | canvas: &mut RgbaImage, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/drawing/chart.rs:415:17 [INFO] [stdout] | [INFO] [stdout] 415 | let x = self.config.info_area_width + draw_col * original_width + self.config.block_distance; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `y` [INFO] [stdout] --> src/drawing/chart.rs:416:17 [INFO] [stdout] | [INFO] [stdout] 416 | let y = height as f32 - (i as f32 * self.config.height_per_second as f32) % height as f32; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_y` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_width` [INFO] [stdout] --> src/drawing/chart.rs:432:13 [INFO] [stdout] | [INFO] [stdout] 432 | let original_width = self.config.block_distance * 2 + self.config.lane_width * 7; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/drawing/components/stat.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `server` [INFO] [stdout] --> src/drawing/chart.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | server: Server, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_server` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/drawing/chart.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | song_id: u32, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `title` [INFO] [stdout] --> src/drawing/chart.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | title: &str, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_title` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `level` [INFO] [stdout] --> src/drawing/chart.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | level: u32, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `canvas` [INFO] [stdout] --> src/drawing/chart.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | canvas: &mut RgbaImage, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/drawing/chart.rs:415:17 [INFO] [stdout] | [INFO] [stdout] 415 | let x = self.config.info_area_width + draw_col * original_width + self.config.block_distance; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `y` [INFO] [stdout] --> src/drawing/chart.rs:416:17 [INFO] [stdout] | [INFO] [stdout] 416 | let y = height as f32 - (i as f32 * self.config.height_per_second as f32) % height as f32; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_y` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_width` [INFO] [stdout] --> src/drawing/chart.rs:432:13 [INFO] [stdout] | [INFO] [stdout] 432 | let original_width = self.config.block_distance * 2 + self.config.lane_width * 7; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/card_list.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 214 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `req` [INFO] [stdout] --> src/routes/search.rs:194:27 [INFO] [stdout] | [INFO] [stdout] 194 | pub async fn search_gacha(req: web::Json) -> Result { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_req` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `req` [INFO] [stdout] --> src/routes/search.rs:240:28 [INFO] [stdout] | [INFO] [stdout] 240 | pub async fn search_player(req: web::Json) -> Result { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_req` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/card_list.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 214 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `req` [INFO] [stdout] --> src/routes/search.rs:194:27 [INFO] [stdout] | [INFO] [stdout] 194 | pub async fn search_gacha(req: web::Json) -> Result { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_req` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `req` [INFO] [stdout] --> src/routes/search.rs:240:28 [INFO] [stdout] | [INFO] [stdout] 240 | pub async fn search_player(req: web::Json) -> Result { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_req` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/song_detail.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/view/song_list.rs:82:10 [INFO] [stdout] | [INFO] [stdout] 82 | for (song_id, song) in &temp_song_list { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Config` is never constructed [INFO] [stdout] --> src/config.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Config { [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 function `from_env` is never used [INFO] [stdout] --> src/config.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Config { [INFO] [stdout] | ----------- associated function in this implementation [INFO] [stdout] 14 | pub fn from_env() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stroke_width` is never read [INFO] [stdout] --> src/drawing/rect.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct RoundedRectOptions { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 16 | pub stroke_width: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stroke` is never used [INFO] [stdout] --> src/drawing/rect.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl RoundedRectOptions { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn stroke(mut self, color: &str, width: u32) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Left`, `Right`, `Start`, and `End` are never constructed [INFO] [stdout] --> src/drawing/rect.rs:225:5 [INFO] [stdout] | [INFO] [stdout] 224 | pub enum TextAlign { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 225 | Left, [INFO] [stdout] | ^^^^ [INFO] [stdout] 226 | Right, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 227 | Center, [INFO] [stdout] 228 | Start, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 229 | End, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TextAlign` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `text_color`, `color`, `opacity`, and `text_align` are never used [INFO] [stdout] --> src/drawing/rect.rs:260:12 [INFO] [stdout] | [INFO] [stdout] 251 | impl RoundedRectWithTextOptions { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 260 | pub fn text_color(mut self, color: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn color(mut self, color: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 270 | pub fn opacity(mut self, opacity: f32) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn text_align(mut self, align: TextAlign) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_image_from_bytes` is never used [INFO] [stdout] --> src/drawing/utils.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn load_image_from_bytes(bytes: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_to_fit` is never used [INFO] [stdout] --> src/drawing/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn resize_to_fit(img: &DynamicImage, max_width: u32, max_height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_exact` is never used [INFO] [stdout] --> src/drawing/utils.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn resize_exact(img: &DynamicImage, width: u32, height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_opacity` is never used [INFO] [stdout] --> src/drawing/utils.rs:134:8 [INFO] [stdout] | [INFO] [stdout] 134 | pub fn apply_opacity(color: image::Rgba, opacity: f32) -> image::Rgba { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_to_fit` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn resize_to_fit(img: &DynamicImage, max_width: u32, max_height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_exact` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn resize_exact(img: &DynamicImage, width: u32, height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scale` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn scale(img: &DynamicImage, scale: f32) -> DynamicImage { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `crop` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn crop(img: &DynamicImage, x: u32, y: u32, width: u32, height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `to_canvas` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn to_canvas(img: &DynamicImage) -> Canvas { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `background`, `top_left_text`, and `opacity` are never used [INFO] [stdout] --> src/drawing/components/datablock.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl DataBlockOptions { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn background(mut self, bg: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn top_left_text(mut self, text: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn opacity(mut self, opacity: f32) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `background` and `top_left_text` are never used [INFO] [stdout] --> src/drawing/components/datablock.rs:178:12 [INFO] [stdout] | [INFO] [stdout] 170 | impl DataBlockHorizontalOptions { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn background(mut self, bg: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn top_left_text(mut self, text: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DIFFICULTY_COLOR_LIST` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 10 | static DIFFICULTY_COLOR_LIST: [&str; 6] = [ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_difficulty` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn draw_difficulty(difficulty_id: DifficultyId, level: u32, height: u32) -> Canvas { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_difficulty_list` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn draw_difficulty_list(song: &Song, height: u32, gap: u32) -> Canvas { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_difficulty_with_meta` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn draw_difficulty_with_meta( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `color` is never used [INFO] [stdout] --> src/drawing/components/list.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl ListOptions { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn color(mut self, color: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `content` and `text_size` are never used [INFO] [stdout] --> src/drawing/components/list.rs:312:12 [INFO] [stdout] | [INFO] [stdout] 296 | impl TipsInListOptions { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn content(mut self, content: Vec) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 317 | pub fn text_size(mut self, size: f32) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `start_with_space` and `use_easy_bg` are never used [INFO] [stdout] --> src/drawing/components/output.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl OutputFinalOptions { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn start_with_space(mut self, value: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn use_easy_bg(mut self, value: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_in_list` is never used [INFO] [stdout] --> src/drawing/components/song.rs:16:14 [INFO] [stdout] | [INFO] [stdout] 16 | pub async fn draw_song_in_list( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_data_block` is never used [INFO] [stdout] --> src/drawing/components/song.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | pub async fn draw_song_data_block( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SongInRank` is never constructed [INFO] [stdout] --> src/drawing/components/song_meta.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct SongInRank { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_meta_ranking` is never used [INFO] [stdout] --> src/drawing/components/song_meta.rs:23:10 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_meta_ranking( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_meta_list_datablock` is never used [INFO] [stdout] --> src/drawing/components/song_meta.rs:93:14 [INFO] [stdout] | [INFO] [stdout] 93 | pub async fn draw_song_meta_list_datablock( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `calc_meta_simple` is never used [INFO] [stdout] --> src/drawing/components/song_meta.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 195 | impl Song { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 198 | pub fn calc_meta_simple(&self, with_fever: bool, difficulty_id: u8) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `JAPAN_TIMEZONE_OFFSET_HOURS` is never used [INFO] [stdout] --> src/drawing/components/time.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const JAPAN_TIMEZONE_OFFSET_HOURS: i32 = 9; // 日本时区UTC+9 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_timestamp_month_day` is never used [INFO] [stdout] --> src/drawing/components/time.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn format_timestamp_month_day(timestamp_ms: i64) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_seconds` is never used [INFO] [stdout] --> src/drawing/components/time.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn format_seconds(seconds: f64) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartRenderConfig` is never constructed [INFO] [stdout] --> src/drawing/chart.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | struct ChartRenderConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartRenderer` is never constructed [INFO] [stdout] --> src/drawing/chart.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct ChartRenderer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/drawing/chart.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl ChartRenderer { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 52 | /// 创建新的渲染器 [INFO] [stdout] 53 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub async fn render_chart( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | fn calculate_canvas_size(&self, chart_data: &ChartData) -> (u32, u32, u32, f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | fn fill_background(&self, canvas: &mut RgbaImage) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | fn draw_info_area( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | fn get_difficulty_color(&self, difficulty_name: &str) -> Rgba { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | fn draw_lanes(&self, canvas: &mut RgbaImage, col_count: u32, height: u32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | fn draw_beat_lines( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn draw_timeline( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 424 | fn draw_notes( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | fn draw_single_note( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | fn draw_directional_note( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 648 | fn draw_tick_note( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 685 | fn draw_bar( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 728 | fn draw_sim( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_song` is never used [INFO] [stdout] --> src/fuzzy_search/matcher.rs:165:8 [INFO] [stdout] | [INFO] [stdout] 165 | pub fn match_song(song: &Song, conditions: &FuzzySearchResult) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_card` is never used [INFO] [stdout] --> src/fuzzy_search/matcher.rs:244:8 [INFO] [stdout] | [INFO] [stdout] 244 | pub fn match_card(card: &Card, conditions: &FuzzySearchResult) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `failed` is never used [INFO] [stdout] --> src/models/response.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ApiResponse { [INFO] [stdout] | ---------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 17 | pub fn failed(message: String) -> ApiResponse { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `base64` is never used [INFO] [stdout] --> src/models/response.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl ResponseData { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn base64(s: impl Into) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `use_easy_bg` is never read [INFO] [stdout] --> src/routes/search.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct SearchCardRequest { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchCardRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_single_card` is never used [INFO] [stdout] --> src/routes/search.rs:106:10 [INFO] [stdout] | [INFO] [stdout] 106 | async fn draw_single_card(state: &AppState, card_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list`, `use_easy_bg`, and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:156:9 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct SearchEventRequest { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 156 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 162 | #[serde(default)] [INFO] [stdout] 163 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchEventRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list`, `gacha_id`, `use_easy_bg`, and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 186 | pub struct SearchGachaRequest { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 187 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 188 | pub gacha_id: i32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 189 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 190 | #[serde(default)] [INFO] [stdout] 191 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchGachaRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list` and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:203:9 [INFO] [stdout] | [INFO] [stdout] 202 | pub struct SearchSongRequest { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 203 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchSongRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `player_id`, `main_server`, `use_easy_bg`, and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:233:9 [INFO] [stdout] | [INFO] [stdout] 232 | pub struct SearchPlayerRequest { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 233 | pub player_id: i64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 234 | pub main_server: Server, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 235 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 236 | #[serde(default)] [INFO] [stdout] 237 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchPlayerRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list` and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 248 | pub struct SearchCharacterRequest { [INFO] [stdout] | ---------------------- fields in this struct [INFO] [stdout] 249 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchCharacterRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `all` and `color` are never used [INFO] [stdout] --> src/types/attribute.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl Attribute { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 22 | /// Get all attributes [INFO] [stdout] 23 | pub fn all() -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn color(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_api`, `from_main_api`, `from_value`, and `get_name` are never used [INFO] [stdout] --> src/types/band.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl Band { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 28 | /// 从mainAPI创建Band [INFO] [stdout] 29 | pub fn from_api(band_id: BandId, main_api: &Arc) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn from_main_api(band_id: BandId, main_api: &MainAPI) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn from_value(band_id: BandId, value: &Value, has_icon: bool) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn get_name(&self, server: Server) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `POPPIN_PARTY` is never used [INFO] [stdout] --> src/types/band.rs:147:15 [INFO] [stdout] | [INFO] [stdout] 147 | pub const POPPIN_PARTY: BandId = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AFTERGLOW` is never used [INFO] [stdout] --> src/types/band.rs:148:15 [INFO] [stdout] | [INFO] [stdout] 148 | pub const AFTERGLOW: BandId = 2; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PASTEL_PALETTES` is never used [INFO] [stdout] --> src/types/band.rs:149:15 [INFO] [stdout] | [INFO] [stdout] 149 | pub const PASTEL_PALETTES: BandId = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ROSELIA` is never used [INFO] [stdout] --> src/types/band.rs:150:15 [INFO] [stdout] | [INFO] [stdout] 150 | pub const ROSELIA: BandId = 4; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HELLO_HAPPY_WORLD` is never used [INFO] [stdout] --> src/types/band.rs:151:15 [INFO] [stdout] | [INFO] [stdout] 151 | pub const HELLO_HAPPY_WORLD: BandId = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MORFONICA` is never used [INFO] [stdout] --> src/types/band.rs:152:15 [INFO] [stdout] | [INFO] [stdout] 152 | pub const MORFONICA: BandId = 18; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RAISE_A_SUILEN` is never used [INFO] [stdout] --> src/types/band.rs:153:15 [INFO] [stdout] | [INFO] [stdout] 153 | pub const RAISE_A_SUILEN: BandId = 21; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MYGO` is never used [INFO] [stdout] --> src/types/band.rs:154:15 [INFO] [stdout] | [INFO] [stdout] 154 | pub const MYGO: BandId = 37; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_name`, `get_character_name`, `illustration_url`, `name_banner_url`, `get_illustration`, and `get_name_banner` are never used [INFO] [stdout] --> src/types/character.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 74 | impl Character { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn get_name(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn get_character_name(&self, server: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn illustration_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn name_banner_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub async fn get_illustration( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub async fn get_name_banner( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SkillEffectType` is never used [INFO] [stdout] --> src/types/skill.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum SkillEffectType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/types/skill.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl Skill { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn initialize_computed_fields(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub fn get_skill_description(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn get_description(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn get_simple_description(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 310 | pub fn get_duration(&self, level: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn is_score_up(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn is_heal(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 327 | pub fn is_judge(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SKILL_TYPE_LIST` is never used [INFO] [stdout] --> src/types/skill.rs:333:11 [INFO] [stdout] | [INFO] [stdout] 333 | pub const SKILL_TYPE_LIST: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CardType` is never used [INFO] [stdout] --> src/types/card.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 44 | pub enum CardType { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `total` is never used [INFO] [stdout] --> src/types/card.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl CardStat { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn total(&self) -> u32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `get_prefix`, `is_released`, `calc_stat`, `calc_max_stat`, and `calc_actual_stat` are never used [INFO] [stdout] --> src/types/card.rs:255:12 [INFO] [stdout] | [INFO] [stdout] 253 | impl Card { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 254 | /// 创建新的卡牌实例 [INFO] [stdout] 255 | pub fn new(card_id: CardId) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn get_prefix(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | pub fn is_released(&self, server: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 404 | pub async fn calc_stat( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | fn calc_max_stat(&self, stat_data: &CardStatData) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 456 | fn calc_actual_stat( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number` is never used [INFO] [stdout] --> src/types/song.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn deserialize_string_or_number<'de, D>(deserializer: D) -> Result, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number_array` is never used [INFO] [stdout] --> src/types/song.rs:81:4 [INFO] [stdout] | [INFO] [stdout] 81 | fn deserialize_string_or_number_array<'de, D>(deserializer: D) -> Result>, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SongTag` is never used [INFO] [stdout] --> src/types/song.rs:114:10 [INFO] [stdout] | [INFO] [stdout] 114 | pub enum SongTag { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_name` is never used [INFO] [stdout] --> src/types/song.rs:123:12 [INFO] [stdout] | [INFO] [stdout] 121 | impl SongTag { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 122 | /// 获取标签的中文名称 [INFO] [stdout] 123 | pub fn get_name(&self) -> &str { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DifficultyInfo` is never constructed [INFO] [stdout] --> src/types/song.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | pub struct DifficultyInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MetaCoefficients` is never constructed [INFO] [stdout] --> src/types/song.rs:157:12 [INFO] [stdout] | [INFO] [stdout] 157 | pub struct MetaCoefficients(pub f64, pub f64, pub f64, pub f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_value_array` is never used [INFO] [stdout] --> src/types/song.rs:161:12 [INFO] [stdout] | [INFO] [stdout] 159 | impl MetaCoefficients { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 160 | /// 从Value数组转换 [INFO] [stdout] 161 | pub fn from_value_array(arr: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `MetaData` is never used [INFO] [stdout] --> src/types/song.rs:184:10 [INFO] [stdout] | [INFO] [stdout] 184 | pub type MetaData = HashMap>; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BpmInfo` is never constructed [INFO] [stdout] --> src/types/song.rs:188:12 [INFO] [stdout] | [INFO] [stdout] 188 | pub struct BpmInfo { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Song` is never constructed [INFO] [stdout] --> src/types/song.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 197 | pub struct Song { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/types/song.rs:256:12 [INFO] [stdout] | [INFO] [stdout] 254 | impl Song { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 255 | /// 从mainAPI创建Song (暂时使用模拟数据) [INFO] [stdout] 256 | pub fn from_main_api(song_id: SongId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 300 | pub fn new(song_id: SongId) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | pub fn from_api(song_id: SongId, main_api: &Arc) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn load_meta_data(&mut self, main_api: &Arc) -> Result<(), ApiError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 397 | pub async fn from_api_async( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | pub async fn init_full(&mut self, downloader: &DownloadService) -> Result<(), ApiError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 462 | pub fn get_title(&self, server: Server) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn get_published_at(&self, server: Server) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 474 | pub fn get_tag_name(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | pub fn get_bpm_range(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 509 | pub async fn get_song_jacket( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 524 | pub fn get_difficulty_level(&self, difficulty_id: DifficultyId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 531 | pub fn get_all_difficulty_levels(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn get_song_levels(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | pub fn get_note_count(&self, difficulty_id: DifficultyId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 549 | pub fn get_difficulty_info(&self, difficulty_id: DifficultyId) -> Option<&DifficultyInfo> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn calc_meta( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DIFFICULTY_NAMES` is never used [INFO] [stdout] --> src/types/song.rs:619:11 [INFO] [stdout] | [INFO] [stdout] 619 | pub const DIFFICULTY_NAMES: &[&str] = &["easy", "normal", "hard", "expert", "special"]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DIFFICULTY_COLORS` is never used [INFO] [stdout] --> src/types/song.rs:622:11 [INFO] [stdout] | [INFO] [stdout] 622 | pub const DIFFICULTY_COLORS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_song_chart` is never used [INFO] [stdout] --> src/types/song.rs:632:18 [INFO] [stdout] | [INFO] [stdout] 630 | impl Song { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 631 | /// 获取谱面数据(从Bestdori API) [INFO] [stdout] 632 | pub async fn get_song_chart( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BESTDORI_URL` is never used [INFO] [stdout] --> src/types/event.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const BESTDORI_URL: &str = "https://bestdori.com"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `EventId` is never used [INFO] [stdout] --> src/types/event.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub type EventId = u32; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EventType` is never used [INFO] [stdout] --> src/types/event.rs:23:10 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum EventType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AttributeBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct AttributeBonus { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CharacterBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct CharacterBonus { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DoubleBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct DoubleBonus { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CharacterParameterBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | pub struct CharacterParameterBonus { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MusicRankingReward` is never constructed [INFO] [stdout] --> src/types/event.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct MusicRankingReward { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EventMusic` is never constructed [INFO] [stdout] --> src/types/event.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub struct EventMusic { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PointReward` is never constructed [INFO] [stdout] --> src/types/event.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | pub struct PointReward { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RankingReward` is never constructed [INFO] [stdout] --> src/types/event.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct RankingReward { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number` is never used [INFO] [stdout] --> src/types/event.rs:115:4 [INFO] [stdout] | [INFO] [stdout] 115 | fn deserialize_string_or_number<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_option_string_or_number` is never used [INFO] [stdout] --> src/types/event.rs:157:4 [INFO] [stdout] | [INFO] [stdout] 157 | fn deserialize_option_string_or_number<'de, D>(deserializer: D) -> Result, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Event` is never constructed [INFO] [stdout] --> src/types/event.rs:222:12 [INFO] [stdout] | [INFO] [stdout] 222 | pub struct Event { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/types/event.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 266 | impl Event { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 267 | /// Create a new Event(创建新活动对象) [INFO] [stdout] 268 | pub fn new(event_id: EventId) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub fn from_api(event_id: EventId, main_api: &Arc) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 314 | pub fn get_name(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 319 | fn parse_timestamp(ts: &Option) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 324 | pub fn get_start_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn get_end_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 334 | pub fn get_public_start_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn get_public_end_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 348 | pub fn is_running(&self, server: usize, current_time: i64) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub async fn init_full( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 404 | pub fn banner_url(&self, _server: Server) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 409 | pub async fn get_banner( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | pub fn get_attribute_list(&self) -> HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 442 | pub fn get_character_list(&self) -> HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn has_character_bonus(&self, character_id: CharacterId) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | pub fn has_attribute_bonus(&self, attribute: Attribute) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn get_character_bonus(&self, character_id: CharacterId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn get_attribute_bonus(&self, attribute: Attribute) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_present_event` is never used [INFO] [stdout] --> src/types/event.rs:482:8 [INFO] [stdout] | [INFO] [stdout] 482 | pub fn get_present_event(_server: Server, _start: u64, _end: u64) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ChartNote` is never used [INFO] [stdout] --> src/types/chart.rs:7:10 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum ChartNote { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Direction` is never used [INFO] [stdout] --> src/types/chart.rs:49:10 [INFO] [stdout] | [INFO] [stdout] 49 | pub enum Direction { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Connection` is never constructed [INFO] [stdout] --> src/types/chart.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | pub struct Connection { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ProcessedNote` is never used [INFO] [stdout] --> src/types/chart.rs:73:10 [INFO] [stdout] | [INFO] [stdout] 73 | pub enum ProcessedNote { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SingleNoteType` is never used [INFO] [stdout] --> src/types/chart.rs:121:10 [INFO] [stdout] | [INFO] [stdout] 121 | pub enum SingleNoteType { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartData` is never constructed [INFO] [stdout] --> src/types/chart.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct ChartData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_json` and `process_notes` are never used [INFO] [stdout] --> src/types/chart.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 137 | impl ChartData { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 138 | /// 从JSON解析谱面数据 [INFO] [stdout] 139 | pub fn from_json(data: &Value) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn process_notes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_detail` is never used [INFO] [stdout] --> src/view/song_detail.rs:19:14 [INFO] [stdout] | [INFO] [stdout] 19 | pub async fn draw_song_detail( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_HEIGHT` is never used [INFO] [stdout] --> src/view/song_list.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_HEIGHT: u32 = 6000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_list` is never used [INFO] [stdout] --> src/view/song_list.rs:24:14 [INFO] [stdout] | [INFO] [stdout] 24 | pub async fn draw_song_list( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_song_list` is never used [INFO] [stdout] --> src/view/song_list.rs:174:4 [INFO] [stdout] | [INFO] [stdout] 174 | fn match_song_list( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `compress` [INFO] [stdout] --> src/view/song_detail.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | compress: bool, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compress` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `song_id` [INFO] [stdout] --> src/view/song_list.rs:82:10 [INFO] [stdout] | [INFO] [stdout] 82 | for (song_id, song) in &temp_song_list { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_song_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Config` is never constructed [INFO] [stdout] --> src/config.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Config { [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 function `from_env` is never used [INFO] [stdout] --> src/config.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Config { [INFO] [stdout] | ----------- associated function in this implementation [INFO] [stdout] 14 | pub fn from_env() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stroke_width` is never read [INFO] [stdout] --> src/drawing/rect.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct RoundedRectOptions { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 16 | pub stroke_width: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stroke` is never used [INFO] [stdout] --> src/drawing/rect.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl RoundedRectOptions { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn stroke(mut self, color: &str, width: u32) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Left`, `Right`, `Start`, and `End` are never constructed [INFO] [stdout] --> src/drawing/rect.rs:225:5 [INFO] [stdout] | [INFO] [stdout] 224 | pub enum TextAlign { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 225 | Left, [INFO] [stdout] | ^^^^ [INFO] [stdout] 226 | Right, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 227 | Center, [INFO] [stdout] 228 | Start, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 229 | End, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TextAlign` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `text_color`, `color`, `opacity`, and `text_align` are never used [INFO] [stdout] --> src/drawing/rect.rs:260:12 [INFO] [stdout] | [INFO] [stdout] 251 | impl RoundedRectWithTextOptions { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 260 | pub fn text_color(mut self, color: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn color(mut self, color: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 270 | pub fn opacity(mut self, opacity: f32) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn text_align(mut self, align: TextAlign) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_image_from_bytes` is never used [INFO] [stdout] --> src/drawing/utils.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn load_image_from_bytes(bytes: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_to_fit` is never used [INFO] [stdout] --> src/drawing/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn resize_to_fit(img: &DynamicImage, max_width: u32, max_height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_exact` is never used [INFO] [stdout] --> src/drawing/utils.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn resize_exact(img: &DynamicImage, width: u32, height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_opacity` is never used [INFO] [stdout] --> src/drawing/utils.rs:134:8 [INFO] [stdout] | [INFO] [stdout] 134 | pub fn apply_opacity(color: image::Rgba, opacity: f32) -> image::Rgba { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_to_fit` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn resize_to_fit(img: &DynamicImage, max_width: u32, max_height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resize_exact` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn resize_exact(img: &DynamicImage, width: u32, height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scale` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn scale(img: &DynamicImage, scale: f32) -> DynamicImage { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `crop` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn crop(img: &DynamicImage, x: u32, y: u32, width: u32, height: u32) -> DynamicImage { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `to_canvas` is never used [INFO] [stdout] --> src/drawing/image_ops.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn to_canvas(img: &DynamicImage) -> Canvas { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `background`, `top_left_text`, and `opacity` are never used [INFO] [stdout] --> src/drawing/components/datablock.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl DataBlockOptions { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn background(mut self, bg: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn top_left_text(mut self, text: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn opacity(mut self, opacity: f32) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `background` and `top_left_text` are never used [INFO] [stdout] --> src/drawing/components/datablock.rs:178:12 [INFO] [stdout] | [INFO] [stdout] 170 | impl DataBlockHorizontalOptions { [INFO] [stdout] | ------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn background(mut self, bg: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn top_left_text(mut self, text: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DIFFICULTY_COLOR_LIST` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 10 | static DIFFICULTY_COLOR_LIST: [&str; 6] = [ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_difficulty` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn draw_difficulty(difficulty_id: DifficultyId, level: u32, height: u32) -> Canvas { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_difficulty_list` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn draw_difficulty_list(song: &Song, height: u32, gap: u32) -> Canvas { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_difficulty_with_meta` is never used [INFO] [stdout] --> src/drawing/components/difficulty.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn draw_difficulty_with_meta( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `color` is never used [INFO] [stdout] --> src/drawing/components/list.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl ListOptions { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn color(mut self, color: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `content` and `text_size` are never used [INFO] [stdout] --> src/drawing/components/list.rs:312:12 [INFO] [stdout] | [INFO] [stdout] 296 | impl TipsInListOptions { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn content(mut self, content: Vec) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 317 | pub fn text_size(mut self, size: f32) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `start_with_space` and `use_easy_bg` are never used [INFO] [stdout] --> src/drawing/components/output.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl OutputFinalOptions { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn start_with_space(mut self, value: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn use_easy_bg(mut self, value: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_in_list` is never used [INFO] [stdout] --> src/drawing/components/song.rs:16:14 [INFO] [stdout] | [INFO] [stdout] 16 | pub async fn draw_song_in_list( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_data_block` is never used [INFO] [stdout] --> src/drawing/components/song.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | pub async fn draw_song_data_block( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SongInRank` is never constructed [INFO] [stdout] --> src/drawing/components/song_meta.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct SongInRank { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_meta_ranking` is never used [INFO] [stdout] --> src/drawing/components/song_meta.rs:23:10 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_meta_ranking( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_meta_list_datablock` is never used [INFO] [stdout] --> src/drawing/components/song_meta.rs:93:14 [INFO] [stdout] | [INFO] [stdout] 93 | pub async fn draw_song_meta_list_datablock( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `calc_meta_simple` is never used [INFO] [stdout] --> src/drawing/components/song_meta.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 195 | impl Song { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 198 | pub fn calc_meta_simple(&self, with_fever: bool, difficulty_id: u8) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_seconds` is never used [INFO] [stdout] --> src/drawing/components/time.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn format_seconds(seconds: f64) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartRenderConfig` is never constructed [INFO] [stdout] --> src/drawing/chart.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | struct ChartRenderConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartRenderer` is never constructed [INFO] [stdout] --> src/drawing/chart.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct ChartRenderer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/drawing/chart.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl ChartRenderer { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 52 | /// 创建新的渲染器 [INFO] [stdout] 53 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub async fn render_chart( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | fn calculate_canvas_size(&self, chart_data: &ChartData) -> (u32, u32, u32, f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | fn fill_background(&self, canvas: &mut RgbaImage) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | fn draw_info_area( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | fn get_difficulty_color(&self, difficulty_name: &str) -> Rgba { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | fn draw_lanes(&self, canvas: &mut RgbaImage, col_count: u32, height: u32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | fn draw_beat_lines( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn draw_timeline( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 424 | fn draw_notes( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | fn draw_single_note( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | fn draw_directional_note( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 648 | fn draw_tick_note( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 685 | fn draw_bar( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 728 | fn draw_sim( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_song` is never used [INFO] [stdout] --> src/fuzzy_search/matcher.rs:165:8 [INFO] [stdout] | [INFO] [stdout] 165 | pub fn match_song(song: &Song, conditions: &FuzzySearchResult) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_card` is never used [INFO] [stdout] --> src/fuzzy_search/matcher.rs:244:8 [INFO] [stdout] | [INFO] [stdout] 244 | pub fn match_card(card: &Card, conditions: &FuzzySearchResult) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `failed` is never used [INFO] [stdout] --> src/models/response.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ApiResponse { [INFO] [stdout] | ---------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 17 | pub fn failed(message: String) -> ApiResponse { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `base64` is never used [INFO] [stdout] --> src/models/response.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl ResponseData { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn base64(s: impl Into) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `use_easy_bg` is never read [INFO] [stdout] --> src/routes/search.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct SearchCardRequest { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchCardRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_single_card` is never used [INFO] [stdout] --> src/routes/search.rs:106:10 [INFO] [stdout] | [INFO] [stdout] 106 | async fn draw_single_card(state: &AppState, card_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list`, `use_easy_bg`, and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:156:9 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct SearchEventRequest { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 156 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 162 | #[serde(default)] [INFO] [stdout] 163 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchEventRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list`, `gacha_id`, `use_easy_bg`, and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 186 | pub struct SearchGachaRequest { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 187 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 188 | pub gacha_id: i32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 189 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 190 | #[serde(default)] [INFO] [stdout] 191 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchGachaRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list` and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:203:9 [INFO] [stdout] | [INFO] [stdout] 202 | pub struct SearchSongRequest { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 203 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchSongRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `player_id`, `main_server`, `use_easy_bg`, and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:233:9 [INFO] [stdout] | [INFO] [stdout] 232 | pub struct SearchPlayerRequest { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 233 | pub player_id: i64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 234 | pub main_server: Server, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 235 | pub use_easy_bg: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 236 | #[serde(default)] [INFO] [stdout] 237 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchPlayerRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `displayed_server_list` and `compress` are never read [INFO] [stdout] --> src/routes/search.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 248 | pub struct SearchCharacterRequest { [INFO] [stdout] | ---------------------- fields in this struct [INFO] [stdout] 249 | pub displayed_server_list: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub compress: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchCharacterRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `all` is never used [INFO] [stdout] --> src/types/attribute.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl Attribute { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] 22 | /// Get all attributes [INFO] [stdout] 23 | pub fn all() -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_api`, `from_main_api`, `from_value`, and `get_name` are never used [INFO] [stdout] --> src/types/band.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl Band { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 28 | /// 从mainAPI创建Band [INFO] [stdout] 29 | pub fn from_api(band_id: BandId, main_api: &Arc) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn from_main_api(band_id: BandId, main_api: &MainAPI) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn from_value(band_id: BandId, value: &Value, has_icon: bool) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn get_name(&self, server: Server) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `POPPIN_PARTY` is never used [INFO] [stdout] --> src/types/band.rs:147:15 [INFO] [stdout] | [INFO] [stdout] 147 | pub const POPPIN_PARTY: BandId = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AFTERGLOW` is never used [INFO] [stdout] --> src/types/band.rs:148:15 [INFO] [stdout] | [INFO] [stdout] 148 | pub const AFTERGLOW: BandId = 2; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PASTEL_PALETTES` is never used [INFO] [stdout] --> src/types/band.rs:149:15 [INFO] [stdout] | [INFO] [stdout] 149 | pub const PASTEL_PALETTES: BandId = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ROSELIA` is never used [INFO] [stdout] --> src/types/band.rs:150:15 [INFO] [stdout] | [INFO] [stdout] 150 | pub const ROSELIA: BandId = 4; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HELLO_HAPPY_WORLD` is never used [INFO] [stdout] --> src/types/band.rs:151:15 [INFO] [stdout] | [INFO] [stdout] 151 | pub const HELLO_HAPPY_WORLD: BandId = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MORFONICA` is never used [INFO] [stdout] --> src/types/band.rs:152:15 [INFO] [stdout] | [INFO] [stdout] 152 | pub const MORFONICA: BandId = 18; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RAISE_A_SUILEN` is never used [INFO] [stdout] --> src/types/band.rs:153:15 [INFO] [stdout] | [INFO] [stdout] 153 | pub const RAISE_A_SUILEN: BandId = 21; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MYGO` is never used [INFO] [stdout] --> src/types/band.rs:154:15 [INFO] [stdout] | [INFO] [stdout] 154 | pub const MYGO: BandId = 37; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_name`, `get_character_name`, `illustration_url`, `name_banner_url`, `get_illustration`, and `get_name_banner` are never used [INFO] [stdout] --> src/types/character.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 74 | impl Character { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn get_name(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn get_character_name(&self, server: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn illustration_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn name_banner_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub async fn get_illustration( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub async fn get_name_banner( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SkillEffectType` is never used [INFO] [stdout] --> src/types/skill.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum SkillEffectType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/types/skill.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl Skill { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn initialize_computed_fields(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub fn get_skill_description(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn get_description(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn get_simple_description(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 310 | pub fn get_duration(&self, level: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn is_score_up(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn is_heal(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 327 | pub fn is_judge(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SKILL_TYPE_LIST` is never used [INFO] [stdout] --> src/types/skill.rs:333:11 [INFO] [stdout] | [INFO] [stdout] 333 | pub const SKILL_TYPE_LIST: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CardType` is never used [INFO] [stdout] --> src/types/card.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 44 | pub enum CardType { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `total` is never used [INFO] [stdout] --> src/types/card.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl CardStat { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn total(&self) -> u32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `get_prefix`, `is_released`, `calc_stat`, `calc_max_stat`, and `calc_actual_stat` are never used [INFO] [stdout] --> src/types/card.rs:255:12 [INFO] [stdout] | [INFO] [stdout] 253 | impl Card { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 254 | /// 创建新的卡牌实例 [INFO] [stdout] 255 | pub fn new(card_id: CardId) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn get_prefix(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | pub fn is_released(&self, server: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 404 | pub async fn calc_stat( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | fn calc_max_stat(&self, stat_data: &CardStatData) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 456 | fn calc_actual_stat( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number` is never used [INFO] [stdout] --> src/types/song.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn deserialize_string_or_number<'de, D>(deserializer: D) -> Result, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number_array` is never used [INFO] [stdout] --> src/types/song.rs:81:4 [INFO] [stdout] | [INFO] [stdout] 81 | fn deserialize_string_or_number_array<'de, D>(deserializer: D) -> Result>, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SongTag` is never used [INFO] [stdout] --> src/types/song.rs:114:10 [INFO] [stdout] | [INFO] [stdout] 114 | pub enum SongTag { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_name` is never used [INFO] [stdout] --> src/types/song.rs:123:12 [INFO] [stdout] | [INFO] [stdout] 121 | impl SongTag { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 122 | /// 获取标签的中文名称 [INFO] [stdout] 123 | pub fn get_name(&self) -> &str { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DifficultyInfo` is never constructed [INFO] [stdout] --> src/types/song.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | pub struct DifficultyInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MetaCoefficients` is never constructed [INFO] [stdout] --> src/types/song.rs:157:12 [INFO] [stdout] | [INFO] [stdout] 157 | pub struct MetaCoefficients(pub f64, pub f64, pub f64, pub f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_value_array` is never used [INFO] [stdout] --> src/types/song.rs:161:12 [INFO] [stdout] | [INFO] [stdout] 159 | impl MetaCoefficients { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 160 | /// 从Value数组转换 [INFO] [stdout] 161 | pub fn from_value_array(arr: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `MetaData` is never used [INFO] [stdout] --> src/types/song.rs:184:10 [INFO] [stdout] | [INFO] [stdout] 184 | pub type MetaData = HashMap>; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BpmInfo` is never constructed [INFO] [stdout] --> src/types/song.rs:188:12 [INFO] [stdout] | [INFO] [stdout] 188 | pub struct BpmInfo { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Song` is never constructed [INFO] [stdout] --> src/types/song.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 197 | pub struct Song { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/types/song.rs:256:12 [INFO] [stdout] | [INFO] [stdout] 254 | impl Song { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 255 | /// 从mainAPI创建Song (暂时使用模拟数据) [INFO] [stdout] 256 | pub fn from_main_api(song_id: SongId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 300 | pub fn new(song_id: SongId) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | pub fn from_api(song_id: SongId, main_api: &Arc) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn load_meta_data(&mut self, main_api: &Arc) -> Result<(), ApiError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 397 | pub async fn from_api_async( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | pub async fn init_full(&mut self, downloader: &DownloadService) -> Result<(), ApiError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 462 | pub fn get_title(&self, server: Server) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn get_published_at(&self, server: Server) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 474 | pub fn get_tag_name(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | pub fn get_bpm_range(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 509 | pub async fn get_song_jacket( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 524 | pub fn get_difficulty_level(&self, difficulty_id: DifficultyId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 531 | pub fn get_all_difficulty_levels(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn get_song_levels(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | pub fn get_note_count(&self, difficulty_id: DifficultyId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 549 | pub fn get_difficulty_info(&self, difficulty_id: DifficultyId) -> Option<&DifficultyInfo> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn calc_meta( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DIFFICULTY_NAMES` is never used [INFO] [stdout] --> src/types/song.rs:619:11 [INFO] [stdout] | [INFO] [stdout] 619 | pub const DIFFICULTY_NAMES: &[&str] = &["easy", "normal", "hard", "expert", "special"]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DIFFICULTY_COLORS` is never used [INFO] [stdout] --> src/types/song.rs:622:11 [INFO] [stdout] | [INFO] [stdout] 622 | pub const DIFFICULTY_COLORS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_song_chart` is never used [INFO] [stdout] --> src/types/song.rs:632:18 [INFO] [stdout] | [INFO] [stdout] 630 | impl Song { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 631 | /// 获取谱面数据(从Bestdori API) [INFO] [stdout] 632 | pub async fn get_song_chart( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BESTDORI_URL` is never used [INFO] [stdout] --> src/types/event.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const BESTDORI_URL: &str = "https://bestdori.com"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `EventId` is never used [INFO] [stdout] --> src/types/event.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub type EventId = u32; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EventType` is never used [INFO] [stdout] --> src/types/event.rs:23:10 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum EventType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AttributeBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct AttributeBonus { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CharacterBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct CharacterBonus { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DoubleBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct DoubleBonus { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CharacterParameterBonus` is never constructed [INFO] [stdout] --> src/types/event.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | pub struct CharacterParameterBonus { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MusicRankingReward` is never constructed [INFO] [stdout] --> src/types/event.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct MusicRankingReward { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EventMusic` is never constructed [INFO] [stdout] --> src/types/event.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub struct EventMusic { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PointReward` is never constructed [INFO] [stdout] --> src/types/event.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | pub struct PointReward { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RankingReward` is never constructed [INFO] [stdout] --> src/types/event.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct RankingReward { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_string_or_number` is never used [INFO] [stdout] --> src/types/event.rs:115:4 [INFO] [stdout] | [INFO] [stdout] 115 | fn deserialize_string_or_number<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_option_string_or_number` is never used [INFO] [stdout] --> src/types/event.rs:157:4 [INFO] [stdout] | [INFO] [stdout] 157 | fn deserialize_option_string_or_number<'de, D>(deserializer: D) -> Result, D::Error> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Event` is never constructed [INFO] [stdout] --> src/types/event.rs:222:12 [INFO] [stdout] | [INFO] [stdout] 222 | pub struct Event { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/types/event.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 266 | impl Event { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 267 | /// Create a new Event(创建新活动对象) [INFO] [stdout] 268 | pub fn new(event_id: EventId) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub fn from_api(event_id: EventId, main_api: &Arc) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 314 | pub fn get_name(&self, server: usize) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 319 | fn parse_timestamp(ts: &Option) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 324 | pub fn get_start_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn get_end_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 334 | pub fn get_public_start_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn get_public_end_at(&self, server: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 348 | pub fn is_running(&self, server: usize, current_time: i64) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub async fn init_full( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 404 | pub fn banner_url(&self, _server: Server) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 409 | pub async fn get_banner( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | pub fn get_attribute_list(&self) -> HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 442 | pub fn get_character_list(&self) -> HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn has_character_bonus(&self, character_id: CharacterId) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | pub fn has_attribute_bonus(&self, attribute: Attribute) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn get_character_bonus(&self, character_id: CharacterId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn get_attribute_bonus(&self, attribute: Attribute) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_present_event` is never used [INFO] [stdout] --> src/types/event.rs:482:8 [INFO] [stdout] | [INFO] [stdout] 482 | pub fn get_present_event(_server: Server, _start: u64, _end: u64) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ChartNote` is never used [INFO] [stdout] --> src/types/chart.rs:7:10 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum ChartNote { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Direction` is never used [INFO] [stdout] --> src/types/chart.rs:49:10 [INFO] [stdout] | [INFO] [stdout] 49 | pub enum Direction { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Connection` is never constructed [INFO] [stdout] --> src/types/chart.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | pub struct Connection { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ProcessedNote` is never used [INFO] [stdout] --> src/types/chart.rs:73:10 [INFO] [stdout] | [INFO] [stdout] 73 | pub enum ProcessedNote { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SingleNoteType` is never used [INFO] [stdout] --> src/types/chart.rs:121:10 [INFO] [stdout] | [INFO] [stdout] 121 | pub enum SingleNoteType { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartData` is never constructed [INFO] [stdout] --> src/types/chart.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct ChartData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_json` and `process_notes` are never used [INFO] [stdout] --> src/types/chart.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 137 | impl ChartData { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 138 | /// 从JSON解析谱面数据 [INFO] [stdout] 139 | pub fn from_json(data: &Value) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn process_notes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_detail` is never used [INFO] [stdout] --> src/view/song_detail.rs:19:14 [INFO] [stdout] | [INFO] [stdout] 19 | pub async fn draw_song_detail( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_HEIGHT` is never used [INFO] [stdout] --> src/view/song_list.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_HEIGHT: u32 = 6000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_song_list` is never used [INFO] [stdout] --> src/view/song_list.rs:24:14 [INFO] [stdout] | [INFO] [stdout] 24 | pub async fn draw_song_list( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_song_list` is never used [INFO] [stdout] --> src/view/song_list.rs:174:4 [INFO] [stdout] | [INFO] [stdout] 174 | fn match_song_list( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 52s [INFO] running `Command { std: "docker" "inspect" "2b0c576bb91a1034b0e9f5250cc6cdb6dd5b31788699d40547aec59dd2890b48", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2b0c576bb91a1034b0e9f5250cc6cdb6dd5b31788699d40547aec59dd2890b48", kill_on_drop: false }` [INFO] [stdout] 2b0c576bb91a1034b0e9f5250cc6cdb6dd5b31788699d40547aec59dd2890b48