[INFO] cloning repository https://github.com/krateng/maloja-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/krateng/maloja-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkrateng%2Fmaloja-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkrateng%2Fmaloja-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 27d453d1b8c86f59219063bab68f1732ed881733 [INFO] checking krateng/maloja-rs against master#e9182f195b8505c87c4bd055b9f6e114ccda0981 for pr-144098 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkrateng%2Fmaloja-rs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-6-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/krateng/maloja-rs [INFO] finished tweaking git repo https://github.com/krateng/maloja-rs [INFO] tweaked toml for git repo https://github.com/krateng/maloja-rs written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/krateng/maloja-rs on toolchain e9182f195b8505c87c4bd055b9f6e114ccda0981 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e9182f195b8505c87c4bd055b9f6e114ccda0981" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/krateng/maloja-rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e9182f195b8505c87c4bd055b9f6e114ccda0981" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sea-bae v0.2.1 [INFO] [stderr] Downloaded dynja v0.4.1 [INFO] [stderr] Downloaded dynja_derive v0.4.1 [INFO] [stderr] Downloaded sea-query-binder v0.7.0 [INFO] [stderr] Downloaded inherent v1.0.11 [INFO] [stderr] Downloaded utoipa v5.3.1 [INFO] [stderr] Downloaded chrono-tz-build v0.4.0 [INFO] [stderr] Downloaded confique-macro v0.0.11 [INFO] [stderr] Downloaded utoipa-axum v0.2.0 [INFO] [stderr] Downloaded sea-orm-macros v1.1.4 [INFO] [stderr] Downloaded memo-map v0.3.3 [INFO] [stderr] Downloaded confique v0.3.0 [INFO] [stderr] Downloaded sea-query v0.32.1 [INFO] [stderr] Downloaded minijinja v1.0.21 [INFO] [stderr] Downloaded utoipa-gen v5.3.1 [INFO] [stderr] Downloaded chrono-tz v0.10.1 [INFO] [stderr] Downloaded sea-orm v1.1.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+e9182f195b8505c87c4bd055b9f6e114ccda0981" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9b2bd6aeffefb028624b9e1f26f76e0f002c49d5c3c6441883ec142c309bb26a [INFO] running `Command { std: "docker" "start" "-a" "9b2bd6aeffefb028624b9e1f26f76e0f002c49d5c3c6441883ec142c309bb26a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9b2bd6aeffefb028624b9e1f26f76e0f002c49d5c3c6441883ec142c309bb26a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9b2bd6aeffefb028624b9e1f26f76e0f002c49d5c3c6441883ec142c309bb26a", kill_on_drop: false }` [INFO] [stdout] 9b2bd6aeffefb028624b9e1f26f76e0f002c49d5c3c6441883ec142c309bb26a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+e9182f195b8505c87c4bd055b9f6e114ccda0981" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aba1739a110ef0fb833ba0be0470f29dd746bcec40ebf290d2d151b52dde9b99 [INFO] running `Command { std: "docker" "start" "-a" "aba1739a110ef0fb833ba0be0470f29dd746bcec40ebf290d2d151b52dde9b99", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.92 [INFO] [stderr] Compiling unicode-ident v1.0.14 [INFO] [stderr] Compiling serde v1.0.216 [INFO] [stderr] Compiling libc v0.2.169 [INFO] [stderr] Checking pin-project-lite v0.2.15 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Checking itoa v1.0.14 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking bytes v1.9.0 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Compiling cc v1.2.5 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Checking foldhash v0.1.4 [INFO] [stderr] Checking once_cell v1.20.2 [INFO] [stderr] Compiling libm v0.2.11 [INFO] [stderr] Checking litemap v0.7.4 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking equivalent v1.0.1 [INFO] [stderr] Checking writeable v0.5.5 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Checking hashbrown v0.15.2 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Compiling serde_json v1.0.134 [INFO] [stderr] Compiling unicase v2.8.1 [INFO] [stderr] Checking ryu v1.0.18 [INFO] [stderr] Checking icu_locid_transform_data v1.5.0 [INFO] [stderr] Checking icu_properties_data v1.5.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking rustls-pki-types v1.10.1 [INFO] [stderr] Checking write16 v1.0.0 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Checking icu_normalizer_data v1.5.0 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Checking utf16_iter v1.0.5 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling bigdecimal v0.4.7 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Checking http v1.2.0 [INFO] [stderr] Compiling rustversion v1.0.19 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking untrusted v0.9.0 [INFO] [stderr] Compiling rust_decimal v1.36.0 [INFO] [stderr] Compiling time-core v0.1.2 [INFO] [stderr] Checking iana-time-zone v0.1.61 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling time-macros v0.2.19 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Compiling thiserror v2.0.11 [INFO] [stderr] Compiling siphasher v1.0.1 [INFO] [stderr] Compiling rustls v0.23.20 [INFO] [stderr] Compiling pkg-config v0.3.31 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling syn v2.0.91 [INFO] [stderr] Checking mime v0.3.17 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Compiling ring v0.17.8 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking cpufeatures v0.2.16 [INFO] [stderr] Checking parking v2.2.1 [INFO] [stderr] Compiling httparse v1.9.5 [INFO] [stderr] Checking crc-catalog v2.4.0 [INFO] [stderr] Checking crc v3.2.1 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking futures-intrusive v0.5.0 [INFO] [stderr] Compiling phf_generator v0.11.3 [INFO] [stderr] Checking event-listener v5.3.1 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Checking hashlink v0.10.0 [INFO] [stderr] Checking rustls-pemfile v2.2.0 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Checking webpki-roots v0.26.7 [INFO] [stderr] Compiling proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Checking httpdate v1.0.3 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Compiling phf_codegen v0.11.3 [INFO] [stderr] Compiling proc-macro-error-attr2 v2.0.0 [INFO] [stderr] Checking flume v0.11.1 [INFO] [stderr] Checking atoi v2.0.0 [INFO] [stderr] Compiling yansi v1.0.1 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Compiling either v1.13.0 [INFO] [stderr] Checking humansize v2.1.3 [INFO] [stderr] Checking ordered-float v3.9.2 [INFO] [stderr] Checking winnow v0.6.20 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling itertools v0.12.1 [INFO] [stderr] Checking askama_escape v0.10.3 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking self_cell v1.1.0 [INFO] [stderr] Checking aliasable v0.1.3 [INFO] [stderr] Checking matchit v0.8.4 [INFO] [stderr] Checking memo-map v0.3.3 [INFO] [stderr] Checking phf v0.11.3 [INFO] [stderr] Checking http-range-header v0.4.2 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking fern v0.7.1 [INFO] [stderr] Checking strum v0.27.1 [INFO] [stderr] Checking colored v3.0.0 [INFO] [stderr] Compiling askama_parser v0.2.1 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Checking http-body-util v0.1.2 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Compiling parse-zoneinfo v0.3.1 [INFO] [stderr] Compiling chrono-tz-build v0.4.0 [INFO] [stderr] Checking rustls-webpki v0.102.8 [INFO] [stderr] Compiling chrono-tz v0.10.1 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Compiling darling_core v0.20.10 [INFO] [stderr] Compiling proc-macro-error2 v2.0.1 [INFO] [stderr] Compiling serde_derive v1.0.216 [INFO] [stderr] Compiling zerofrom-derive v0.1.5 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling thiserror-impl v2.0.11 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling async-trait v0.1.83 [INFO] [stderr] Compiling inherent v1.0.11 [INFO] [stderr] Compiling ouroboros_macro v0.18.4 [INFO] [stderr] Compiling utoipa-gen v5.3.1 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Checking tokio v1.40.0 [INFO] [stderr] Compiling sea-bae v0.2.1 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking async-stream v0.3.6 [INFO] [stderr] Compiling confique-macro v0.0.11 [INFO] [stderr] Compiling sea-orm-macros v1.1.4 [INFO] [stderr] Compiling dynja_derive v0.4.1 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Checking zerofrom v0.1.5 [INFO] [stderr] Checking axum-core v0.5.0 [INFO] [stderr] Checking yoke v0.7.5 [INFO] [stderr] Compiling strum_macros v0.27.1 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking ouroboros v0.18.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling darling_macro v0.20.10 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Compiling darling v0.20.10 [INFO] [stderr] Compiling sea-query-derive v0.4.2 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking indexmap v2.7.0 [INFO] [stderr] Checking deranged v0.3.11 [INFO] [stderr] Checking chrono v0.4.39 [INFO] [stderr] Checking uuid v1.11.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Checking hyper v1.5.2 [INFO] [stderr] Checking toml_datetime v0.6.8 [INFO] [stderr] Checking serde_spanned v0.6.8 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking serde_path_to_error v0.1.16 [INFO] [stderr] Checking tokio-util v0.7.13 [INFO] [stderr] Checking minijinja v1.0.21 [INFO] [stderr] Checking tower-http v0.6.2 [INFO] [stderr] Checking toml_edit v0.22.22 [INFO] [stderr] Checking hyper-util v0.1.10 [INFO] [stderr] Checking time v0.3.37 [INFO] [stderr] Checking axum v0.8.1 [INFO] [stderr] Compiling basic-toml v0.1.9 [INFO] [stderr] Checking utoipa v5.3.1 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Compiling askama_derive v0.12.5 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking toml v0.8.19 [INFO] [stderr] Checking sea-query v0.32.1 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking confique v0.3.0 [INFO] [stderr] Checking sqlx-core v0.8.3 [INFO] [stderr] Checking askama v0.12.1 [INFO] [stderr] Checking askama_axum v0.4.0 [INFO] [stderr] Checking dynja v0.4.1 [INFO] [stderr] Checking utoipa-axum v0.2.0 [INFO] [stderr] Checking sqlx-sqlite v0.8.3 [INFO] [stderr] Checking sqlx v0.8.3 [INFO] [stderr] Checking sea-query-binder v0.7.0 [INFO] [stderr] Checking sea-orm v1.1.4 [INFO] [stderr] Checking maloja-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/database/views.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/database/import.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsString` [INFO] [stdout] --> src/database/import.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ffi::OsString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConnectionTrait`, `DatabaseConnection`, `DbErr`, and `EntityTrait` [INFO] [stdout] --> src/database/import.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use sea_orm::{ConnectionTrait, DatabaseConnection, DbErr, EntityTrait}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/database/import.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ColumnType::Json` [INFO] [stdout] --> src/database/import.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use sea_orm::ColumnType::Json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `album::ActiveModel as AlbumModel`, `album::Entity as AlbumEntity`, `artist::ActiveModel as ArtistModel`, `artist::Entity as ArtistEntity`, `scrobble::ActiveModel as ScrobbleModel`, `scrobble::Entity as ScrobbleEntity`, `track::ActiveModel as TrackModel`, and `track::Entity as TrackEntity` [INFO] [stdout] --> src/database/import.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | scrobble::Entity as ScrobbleEntity, scrobble::ActiveModel as ScrobbleModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | track::Entity as TrackEntity, track::ActiveModel as TrackModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | album::Entity as AlbumEntity, album::ActiveModel as AlbumModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | artist::Entity as ArtistEntity, artist::ActiveModel as ArtistModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/get_or_create.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, NotSet, QueryFilter}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AlbumRead`, `ArtistRead`, and `TrackRead` [INFO] [stdout] --> src/database/repository/get_or_create.rs:8:119 [INFO] [stdout] | [INFO] [stdout] 8 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 9 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 10 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Column as ScrobbleColumn`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/resolve.rs:4:30 [INFO] [stdout] | [INFO] [stdout] 4 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 5 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 6 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead, A... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 7 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 8 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/stats.rs:1:28 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, JoinType, QueryFilter, QueryOrder, QuerySelect, RelationTrait}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/stats.rs:9:30 [INFO] [stdout] | [INFO] [stdout] 9 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 10 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 11 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 12 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 13 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel, Column as TrackArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel, Column as AlbumArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::DbErr` [INFO] [stdout] --> src/database/repository/info.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::DbErr; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Entity as TrackEntity` and `TrackRead` [INFO] [stdout] --> src/database/repository/scrobbles.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::entity::track::{TrackRead, Entity as TrackEntity, Column as TrackColumn, Relation as TrackRelation}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::entity::scrobble::ScrobbleRead` [INFO] [stdout] --> src/database/repository/history.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::entity::scrobble::ScrobbleRead; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RangeType` [INFO] [stdout] --> src/database/repository/history.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::timeranges::{RangeType, TimeRange}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::http::StatusCode` [INFO] [stdout] --> src/database/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use axum::http::StatusCode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::Json` [INFO] [stdout] --> src/database/errors.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use axum::Json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IntoResponse` and `Response` [INFO] [stdout] --> src/database/errors.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{IntoResponse, Response}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `strum` [INFO] [stdout] --> src/database/errors.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use strum; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/database/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/mod.rs:17:97 [INFO] [stdout] | [INFO] [stdout] 17 | use sea_orm::{ConnectOptions, ConnectionTrait, Database, DatabaseConnection, DbBackend, DbConn, DbErr, Schema, Statement}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/album.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/entity/artist.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/entity/scrobble.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/track.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dynja::minijinja::functions::range` [INFO] [stdout] --> src/server/pages.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use dynja::minijinja::functions::range; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Html`, `IntoResponse`, and `Response` [INFO] [stdout] --> src/server/mod.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{Html, IntoResponse, Response}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Json` [INFO] [stdout] --> src/server/mod.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | use axum::{Json, Router}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `NaiveDateTime` [INFO] [stdout] --> src/timeranges.rs:2:77 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Deserializer` [INFO] [stdout] --> src/timeranges.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use serde::{Deserialize, Deserializer, Serialize, Serializer}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PartialSchema` [INFO] [stdout] --> src/timeranges.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use utoipa::{PartialSchema, ToSchema}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RefOr` and `Schema` [INFO] [stdout] --> src/timeranges.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use utoipa::openapi::{RefOr, Schema}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/timeranges.rs:59:43 [INFO] [stdout] | [INFO] [stdout] 59 | let first_week_start = if (use_offset >= 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 59 - let first_week_start = if (use_offset >= 0) { [INFO] [stdout] 59 + let first_week_start = if use_offset >= 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/timeranges.rs:234:17 [INFO] [stdout] | [INFO] [stdout] 234 | (s < e) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 234 - (s < e) [INFO] [stdout] 234 + s < e [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/uri.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/uri.rs:3:26 [INFO] [stdout] | [INFO] [stdout] 3 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/uri.rs:22:25 [INFO] [stdout] | [INFO] [stdout] 22 | let end_index = (start_index + per_page as usize); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 22 - let end_index = (start_index + per_page as usize); [INFO] [stdout] 22 + let end_index = start_index + per_page as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/database/views.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/database/import.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsString` [INFO] [stdout] --> src/database/import.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ffi::OsString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConnectionTrait`, `DatabaseConnection`, `DbErr`, and `EntityTrait` [INFO] [stdout] --> src/database/import.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use sea_orm::{ConnectionTrait, DatabaseConnection, DbErr, EntityTrait}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/database/import.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ColumnType::Json` [INFO] [stdout] --> src/database/import.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use sea_orm::ColumnType::Json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `album::ActiveModel as AlbumModel`, `album::Entity as AlbumEntity`, `artist::ActiveModel as ArtistModel`, `artist::Entity as ArtistEntity`, `scrobble::ActiveModel as ScrobbleModel`, `scrobble::Entity as ScrobbleEntity`, `track::ActiveModel as TrackModel`, and `track::Entity as TrackEntity` [INFO] [stdout] --> src/database/import.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | scrobble::Entity as ScrobbleEntity, scrobble::ActiveModel as ScrobbleModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | track::Entity as TrackEntity, track::ActiveModel as TrackModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | album::Entity as AlbumEntity, album::ActiveModel as AlbumModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | artist::Entity as ArtistEntity, artist::ActiveModel as ArtistModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/get_or_create.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, NotSet, QueryFilter}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AlbumRead`, `ArtistRead`, and `TrackRead` [INFO] [stdout] --> src/database/repository/get_or_create.rs:8:119 [INFO] [stdout] | [INFO] [stdout] 8 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 9 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 10 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Column as ScrobbleColumn`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/resolve.rs:4:30 [INFO] [stdout] | [INFO] [stdout] 4 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 5 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 6 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead, A... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 7 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 8 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/stats.rs:1:28 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, JoinType, QueryFilter, QueryOrder, QuerySelect, RelationTrait}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/stats.rs:9:30 [INFO] [stdout] | [INFO] [stdout] 9 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 10 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 11 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 12 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 13 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel, Column as TrackArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel, Column as AlbumArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::DbErr` [INFO] [stdout] --> src/database/repository/info.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::DbErr; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Entity as TrackEntity` and `TrackRead` [INFO] [stdout] --> src/database/repository/scrobbles.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::entity::track::{TrackRead, Entity as TrackEntity, Column as TrackColumn, Relation as TrackRelation}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::entity::scrobble::ScrobbleRead` [INFO] [stdout] --> src/database/repository/history.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::entity::scrobble::ScrobbleRead; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RangeType` [INFO] [stdout] --> src/database/repository/history.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::timeranges::{RangeType, TimeRange}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::http::StatusCode` [INFO] [stdout] --> src/database/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use axum::http::StatusCode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::Json` [INFO] [stdout] --> src/database/errors.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use axum::Json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IntoResponse` and `Response` [INFO] [stdout] --> src/database/errors.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{IntoResponse, Response}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `strum` [INFO] [stdout] --> src/database/errors.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use strum; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/database/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/mod.rs:17:97 [INFO] [stdout] | [INFO] [stdout] 17 | use sea_orm::{ConnectOptions, ConnectionTrait, Database, DatabaseConnection, DbBackend, DbConn, DbErr, Schema, Statement}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/album.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/entity/artist.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/entity/scrobble.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/track.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dynja::minijinja::functions::range` [INFO] [stdout] --> src/server/pages.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use dynja::minijinja::functions::range; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Html`, `IntoResponse`, and `Response` [INFO] [stdout] --> src/server/mod.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{Html, IntoResponse, Response}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Json` [INFO] [stdout] --> src/server/mod.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | use axum::{Json, Router}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `NaiveDateTime` [INFO] [stdout] --> src/timeranges.rs:2:77 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Deserializer` [INFO] [stdout] --> src/timeranges.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use serde::{Deserialize, Deserializer, Serialize, Serializer}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PartialSchema` [INFO] [stdout] --> src/timeranges.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use utoipa::{PartialSchema, ToSchema}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RefOr` and `Schema` [INFO] [stdout] --> src/timeranges.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use utoipa::openapi::{RefOr, Schema}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/timeranges.rs:59:43 [INFO] [stdout] | [INFO] [stdout] 59 | let first_week_start = if (use_offset >= 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 59 - let first_week_start = if (use_offset >= 0) { [INFO] [stdout] 59 + let first_week_start = if use_offset >= 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/timeranges.rs:234:17 [INFO] [stdout] | [INFO] [stdout] 234 | (s < e) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 234 - (s < e) [INFO] [stdout] 234 + s < e [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/uri.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/uri.rs:3:26 [INFO] [stdout] | [INFO] [stdout] 3 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/uri.rs:22:25 [INFO] [stdout] | [INFO] [stdout] 22 | let end_index = (start_index + per_page as usize); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 22 - let end_index = (start_index + per_page as usize); [INFO] [stdout] 22 + let end_index = start_index + per_page as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression [INFO] [stdout] --> src/tests/fixtures.rs:62:15 [INFO] [stdout] | [INFO] [stdout] 62 | for _i in (0..ARTISTS_AMOUNT) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 62 - for _i in (0..ARTISTS_AMOUNT) { [INFO] [stdout] 62 + for _i in 0..ARTISTS_AMOUNT { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression [INFO] [stdout] --> src/tests/fixtures.rs:80:15 [INFO] [stdout] | [INFO] [stdout] 80 | for _i in (0..TRACKS_AMOUNT) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 80 - for _i in (0..TRACKS_AMOUNT) { [INFO] [stdout] 80 + for _i in 0..TRACKS_AMOUNT { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression [INFO] [stdout] --> src/tests/fixtures.rs:107:15 [INFO] [stdout] | [INFO] [stdout] 107 | for _i in (0..SCROBBLES_AMOUNT) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 107 - for _i in (0..SCROBBLES_AMOUNT) { [INFO] [stdout] 107 + for _i in 0..SCROBBLES_AMOUNT { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/api/maloja_2.rs:121:54 [INFO] [stdout] | [INFO] [stdout] 121 | PathRejection::MissingPathParams(error) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/api/maloja_2.rs:121:54 [INFO] [stdout] | [INFO] [stdout] 121 | PathRejection::MissingPathParams(error) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/import.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | let result = match entry.file_name().to_str() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/import.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 44 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | let db_result = Artist::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:150:10 [INFO] [stdout] | [INFO] [stdout] 150 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:268:21 [INFO] [stdout] | [INFO] [stdout] 268 | let db_result = TrackArtist::insert_many(track_artist_inserts_primary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:271:21 [INFO] [stdout] | [INFO] [stdout] 271 | let db_result = TrackArtist::insert_many(track_artist_inserts_secondary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:307:10 [INFO] [stdout] | [INFO] [stdout] 307 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:408:21 [INFO] [stdout] | [INFO] [stdout] 408 | let db_result = AlbumArtist::insert_many(album_artist_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/import.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | let result = match entry.file_name().to_str() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/import.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fail_on_existing` [INFO] [stdout] --> src/database/repository/get_or_create.rs:428:58 [INFO] [stdout] | [INFO] [stdout] 428 | ...ec, fail_on_existing: bool) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fail_on_existing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:448:10 [INFO] [stdout] | [INFO] [stdout] 448 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:492:17 [INFO] [stdout] | [INFO] [stdout] 492 | let db_result = Scrobble::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 44 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | let db_result = Artist::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:52:43 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:52:54 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:150:10 [INFO] [stdout] | [INFO] [stdout] 150 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:268:21 [INFO] [stdout] | [INFO] [stdout] 268 | let db_result = TrackArtist::insert_many(track_artist_inserts_primary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:271:21 [INFO] [stdout] | [INFO] [stdout] 271 | let db_result = TrackArtist::insert_many(track_artist_inserts_secondary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:86:43 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:86:54 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/database/repository/stats.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | let mut query = Artist::find() [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:127:43 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:127:54 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:307:10 [INFO] [stdout] | [INFO] [stdout] 307 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:408:21 [INFO] [stdout] | [INFO] [stdout] 408 | let db_result = AlbumArtist::insert_many(album_artist_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fail_on_existing` [INFO] [stdout] --> src/database/repository/get_or_create.rs:428:58 [INFO] [stdout] | [INFO] [stdout] 428 | ...ec, fail_on_existing: bool) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fail_on_existing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:448:10 [INFO] [stdout] | [INFO] [stdout] 448 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:492:17 [INFO] [stdout] | [INFO] [stdout] 492 | let db_result = Scrobble::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/mod.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | let result = db.execute(statement).await.expect("wut"); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:52:43 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:52:54 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:86:43 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:86:54 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/database/repository/stats.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | let mut query = Artist::find() [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:127:43 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:127:54 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tests/fixtures.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | let mut time = chrono::Utc::now() - chrono::Duration::days(1); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/mod.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | let result = db.execute(statement).await.expect("wut"); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TimeZone` [INFO] [stdout] --> src/timeranges.rs:2:47 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/api/maloja_2.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/api/maloja_2.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TimeZone` [INFO] [stdout] --> src/timeranges.rs:2:47 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dis` [INFO] [stdout] --> src/configuration/logging.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | let dis = fern::Dispatch::new() [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_dis` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dis` [INFO] [stdout] --> src/configuration/logging.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | let dis = fern::Dispatch::new() [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_dis` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:93:20 [INFO] [stdout] | [INFO] [stdout] 93 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:120:20 [INFO] [stdout] | [INFO] [stdout] 120 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:148:34 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:148:40 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `day` [INFO] [stdout] --> src/timeranges.rs:148:47 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^ help: try ignoring the field: `day: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:149:35 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `week` [INFO] [stdout] --> src/timeranges.rs:149:41 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `week: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:150:36 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:150:42 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:151:35 [INFO] [stdout] | [INFO] [stdout] 151 | BaseTimeRange::Year { year } => { dt.format("%Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:200:36 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:200:43 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:214:36 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:214:43 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `base` [INFO] [stdout] --> src/timeranges.rs:231:31 [INFO] [stdout] | [INFO] [stdout] 231 | TimeRange::Simple(base) => true, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_base` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:232:36 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:232:43 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:93:20 [INFO] [stdout] | [INFO] [stdout] 93 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:120:20 [INFO] [stdout] | [INFO] [stdout] 120 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:148:34 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:148:40 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `day` [INFO] [stdout] --> src/timeranges.rs:148:47 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^ help: try ignoring the field: `day: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:149:35 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `week` [INFO] [stdout] --> src/timeranges.rs:149:41 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `week: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:150:36 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:150:42 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:151:35 [INFO] [stdout] | [INFO] [stdout] 151 | BaseTimeRange::Year { year } => { dt.format("%Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:200:36 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:200:43 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:214:36 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:214:43 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `base` [INFO] [stdout] --> src/timeranges.rs:231:31 [INFO] [stdout] | [INFO] [stdout] 231 | TimeRange::Simple(base) => true, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_base` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:232:36 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:232:43 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `APIS` is never used [INFO] [stdout] --> src/api/mod.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const APIS: [ScrobbleAPI; 3] = [listenbrainz::API, audioscrobbler::API, maloja_2::API]; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `APIS` is never used [INFO] [stdout] --> src/api/mod.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const APIS: [ScrobbleAPI; 3] = [listenbrainz::API, audioscrobbler::API, maloja_2::API]; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScrobbleAPI` is never constructed [INFO] [stdout] --> src/api/mod.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct ScrobbleAPI { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScrobbleAPI` is never constructed [INFO] [stdout] --> src/api/mod.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct ScrobbleAPI { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/mod.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct ApiDoc {} [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mount_apis` is never used [INFO] [stdout] --> src/api/mod.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn mount_apis(root_router: Router) -> Router { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `openapi` is never used [INFO] [stdout] --> src/api/mod.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | async fn openapi() -> Response { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `API` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const API: ScrobbleAPI = ScrobbleAPI { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_routes` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:15:4 [INFO] [stdout] | [INFO] [stdout] 15 | fn register_routes(mut router: OpenApiRouter) -> OpenApiRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/audioscrobbler.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct ApiDoc; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mainendpoint` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | pub async fn mainendpoint() -> Json { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mainendpoint_post` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:51:14 [INFO] [stdout] | [INFO] [stdout] 51 | pub async fn mainendpoint_post() -> Json { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `API` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const API: ScrobbleAPI = ScrobbleAPI { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_routes` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:15:4 [INFO] [stdout] | [INFO] [stdout] 15 | fn register_routes(mut router: OpenApiRouter) -> OpenApiRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/listenbrainz.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct ApiDoc; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/mod.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct ApiDoc {} [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mount_apis` is never used [INFO] [stdout] --> src/api/mod.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn mount_apis(root_router: Router) -> Router { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `openapi` is never used [INFO] [stdout] --> src/api/mod.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | async fn openapi() -> Response { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `API` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const API: ScrobbleAPI = ScrobbleAPI { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_routes` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:15:4 [INFO] [stdout] | [INFO] [stdout] 15 | fn register_routes(mut router: OpenApiRouter) -> OpenApiRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/audioscrobbler.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct ApiDoc; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mainendpoint` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | pub async fn mainendpoint() -> Json { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `submit` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 32 | pub async fn submit() -> Json { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:41:14 [INFO] [stdout] | [INFO] [stdout] 41 | pub async fn validate() -> Json { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `API` is never used [INFO] [stdout] --> src/api/maloja_2.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const API: ScrobbleAPI = ScrobbleAPI { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_routes` is never used [INFO] [stdout] --> src/api/maloja_2.rs:32:4 [INFO] [stdout] | [INFO] [stdout] 32 | fn register_routes(mut router: OpenApiRouter) -> OpenApiRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/maloja_2.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct ApiDoc; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `APIError` is never constructed [INFO] [stdout] --> src/api/maloja_2.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | struct APIError { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_response` is never used [INFO] [stdout] --> src/api/maloja_2.rs:67:4 [INFO] [stdout] | [INFO] [stdout] 67 | fn create_response(e: &MalojaError, code: StatusCode, description: String) -> Response { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Path` is never constructed [INFO] [stdout] --> src/api/maloja_2.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 93 | struct Path(T); [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `notfound` is never used [INFO] [stdout] --> src/api/maloja_2.rs:141:14 [INFO] [stdout] | [INFO] [stdout] 141 | pub async fn notfound() -> Response { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_artist` is never used [INFO] [stdout] --> src/api/maloja_2.rs:159:10 [INFO] [stdout] | [INFO] [stdout] 159 | async fn info_artist(Path(params_path): Path) -> Result<(StatusCode, Json), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_track` is never used [INFO] [stdout] --> src/api/maloja_2.rs:175:10 [INFO] [stdout] | [INFO] [stdout] 175 | async fn info_track(Path(params_path): Path) -> Result<(StatusCode, Json), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_album` is never used [INFO] [stdout] --> src/api/maloja_2.rs:190:10 [INFO] [stdout] | [INFO] [stdout] 190 | async fn info_album(Path(params_path): Path) -> Result<(StatusCode, Json), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_tracks` is never used [INFO] [stdout] --> src/api/maloja_2.rs:207:10 [INFO] [stdout] | [INFO] [stdout] 207 | async fn charts_tracks( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_artists` is never used [INFO] [stdout] --> src/api/maloja_2.rs:236:10 [INFO] [stdout] | [INFO] [stdout] 236 | async fn charts_artists( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_albums` is never used [INFO] [stdout] --> src/api/maloja_2.rs:261:10 [INFO] [stdout] | [INFO] [stdout] 261 | async fn charts_albums( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scrobbles` is never used [INFO] [stdout] --> src/api/maloja_2.rs:290:10 [INFO] [stdout] | [INFO] [stdout] 290 | async fn scrobbles( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pulse` is never used [INFO] [stdout] --> src/api/maloja_2.rs:315:10 [INFO] [stdout] | [INFO] [stdout] 315 | async fn pulse( [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `performance` is never used [INFO] [stdout] --> src/api/maloja_2.rs:344:10 [INFO] [stdout] | [INFO] [stdout] 344 | async fn performance( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `FOLDERS` is never used [INFO] [stdout] --> src/configuration/mod.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub static FOLDERS: LazyLock = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `CONFIG` is never used [INFO] [stdout] --> src/configuration/mod.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 62 | pub static CONFIG: LazyLock = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApplicationFolders` is never constructed [INFO] [stdout] --> src/configuration/mod.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct ApplicationFolders { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaConfig` is never constructed [INFO] [stdout] --> src/configuration/mod.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct MalojaConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_config_file_path` is never used [INFO] [stdout] --> src/configuration/mod.rs:143:4 [INFO] [stdout] | [INFO] [stdout] 143 | fn get_config_file_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_config_template` is never used [INFO] [stdout] --> src/configuration/mod.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn create_config_template() -> io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_logfile_path` is never used [INFO] [stdout] --> src/configuration/logging.rs:8:4 [INFO] [stdout] | [INFO] [stdout] 8 | fn get_logfile_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `setup_logger` is never used [INFO] [stdout] --> src/configuration/logging.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn setup_logger() -> Result<(), fern::InitError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `display_path` is never used [INFO] [stdout] --> src/configuration/logging.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn display_path(path: &PathBuf) -> ColoredString { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `display_envvar` is never used [INFO] [stdout] --> src/configuration/logging.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn display_envvar(var: &str) -> ColoredString { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `display_url` is never used [INFO] [stdout] --> src/configuration/logging.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn display_url(var: &str) -> ColoredString { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_database_path` is never used [INFO] [stdout] --> src/database/mod.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn get_database_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_db` is never used [INFO] [stdout] --> src/database/mod.rs:25:14 [INFO] [stdout] | [INFO] [stdout] 25 | pub async fn init_db() -> Result<(), MalojaError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mark_db_write` is never used [INFO] [stdout] --> src/database/mod.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn mark_db_write() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `connect` is never used [INFO] [stdout] --> src/database/mod.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | pub async fn connect() -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tables` is never used [INFO] [stdout] --> src/database/mod.rs:72:14 [INFO] [stdout] | [INFO] [stdout] 72 | pub async fn create_tables(db: &DbConn) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_table` is never used [INFO] [stdout] --> src/database/mod.rs:85:10 [INFO] [stdout] | [INFO] [stdout] 85 | async fn create_table(db: &DbConn, entity: E) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Charts` is never constructed [INFO] [stdout] --> src/database/views.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Charts { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Top` is never constructed [INFO] [stdout] --> src/database/views.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Top { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Paginated` is never constructed [INFO] [stdout] --> src/database/views.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct Paginated { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PaginationInfo` is never constructed [INFO] [stdout] --> src/database/views.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct PaginationInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartsEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct ChartsEntry { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TopEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct TopEntry { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PulseEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct PulseEntry { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PerformanceEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct PerformanceEntry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `import` is never used [INFO] [stdout] --> src/database/import.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub async fn import() -> Result<(i32, i32), io::Error> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExport` is never constructed [INFO] [stdout] --> src/database/import.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 48 | struct MalojaExport { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExportScrobble` is never constructed [INFO] [stdout] --> src/database/import.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | struct MalojaExportScrobble { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExportTrack` is never constructed [INFO] [stdout] --> src/database/import.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | struct MalojaExportTrack { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExportAlbum` is never constructed [INFO] [stdout] --> src/database/import.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | struct MalojaExportAlbum { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `import_maloja` is never used [INFO] [stdout] --> src/database/import.rs:73:14 [INFO] [stdout] | [INFO] [stdout] 73 | pub async fn import_maloja(file: PathBuf) -> Result<(), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BATCH_SIZE` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const BATCH_SIZE: usize = 250; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:19:4 [INFO] [stdout] | [INFO] [stdout] 19 | fn normalize(input: &str) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_or_create_artists` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub async fn get_or_create_artists(input: Vec) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_or_create_tracks` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:131:14 [INFO] [stdout] | [INFO] [stdout] 131 | pub async fn get_or_create_tracks(input: Vec) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_or_create_albums` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:292:14 [INFO] [stdout] | [INFO] [stdout] 292 | pub async fn get_or_create_albums(input: Vec) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_scrobbles` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:428:14 [INFO] [stdout] | [INFO] [stdout] 428 | pub async fn create_scrobbles(input: Vec, fail_on_existing: bool) -> Result, MalojaE... [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_track_ids` is never used [INFO] [stdout] --> src/database/repository/resolve.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub async fn resolve_track_ids(ids: Vec, db: &DatabaseConnection) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_album_ids` is never used [INFO] [stdout] --> src/database/repository/resolve.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | pub async fn resolve_album_ids(ids: Vec, db: &DatabaseConnection) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_artist_ids` is never used [INFO] [stdout] --> src/database/repository/resolve.rs:73:14 [INFO] [stdout] | [INFO] [stdout] 73 | pub async fn resolve_artist_ids(ids: Vec, db: &DatabaseConnection) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_tracks` is never used [INFO] [stdout] --> src/database/repository/stats.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 22 | pub async fn charts_tracks(timerange: TimeRange, artist_id: Option, album_id: Option) -> Result>, Ma... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_artists` is never used [INFO] [stdout] --> src/database/repository/stats.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | pub async fn charts_artists(timerange: TimeRange) -> Result>, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_albums` is never used [INFO] [stdout] --> src/database/repository/stats.rs:100:14 [INFO] [stdout] | [INFO] [stdout] 100 | pub async fn charts_albums(timerange: TimeRange, artist_id: Option) -> Result>, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `artist_info` is never used [INFO] [stdout] --> src/database/repository/info.rs:9:14 [INFO] [stdout] | [INFO] [stdout] 9 | pub async fn artist_info(artist_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `track_info` is never used [INFO] [stdout] --> src/database/repository/info.rs:18:14 [INFO] [stdout] | [INFO] [stdout] 18 | pub async fn track_info(track_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `album_info` is never used [INFO] [stdout] --> src/database/repository/info.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub async fn album_info(album_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scrobbles` is never used [INFO] [stdout] --> src/database/repository/scrobbles.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn scrobbles(timerange: TimeRange, artist_id: Option, album_id: Option, track_id: Option, new_to_old: bool) -> R... [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pulse` is never used [INFO] [stdout] --> src/database/repository/history.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | pub async fn pulse(sub_ranges: Vec, artist_id: Option, album_id: Option, track_id: Option) -> Result src/database/repository/history.rs:24:14 [INFO] [stdout] | [INFO] [stdout] 24 | pub async fn performance(sub_ranges: Vec, artist_id: Option, album_id: Option, track_id: Option) -> Result src/database/errors.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum MalojaError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/album.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/album.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlbumWrite` is never constructed [INFO] [stdout] --> src/entity/album.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 52 | pub struct AlbumWrite { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlbumRead` is never constructed [INFO] [stdout] --> src/entity/album.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct AlbumRead { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/artist.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/artist.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistWrite` is never constructed [INFO] [stdout] --> src/entity/artist.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct ArtistWrite { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistRead` is never constructed [INFO] [stdout] --> src/entity/artist.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct ArtistRead { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistReadContext` is never constructed [INFO] [stdout] --> src/entity/artist.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct ArtistReadContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/scrobble.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mainendpoint_post` is never used [INFO] [stdout] --> src/api/audioscrobbler.rs:51:14 [INFO] [stdout] | [INFO] [stdout] 51 | pub async fn mainendpoint_post() -> Json { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/scrobble.rs:29:10 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `API` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const API: ScrobbleAPI = ScrobbleAPI { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScrobbleWrite` is never constructed [INFO] [stdout] --> src/entity/scrobble.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct ScrobbleWrite { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_routes` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:15:4 [INFO] [stdout] | [INFO] [stdout] 15 | fn register_routes(mut router: OpenApiRouter) -> OpenApiRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScrobbleRead` is never constructed [INFO] [stdout] --> src/entity/scrobble.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct ScrobbleRead { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/listenbrainz.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct ApiDoc; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/track.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `submit` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 32 | pub async fn submit() -> Json { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/track.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate` is never used [INFO] [stdout] --> src/api/listenbrainz.rs:41:14 [INFO] [stdout] | [INFO] [stdout] 41 | pub async fn validate() -> Json { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackWrite` is never constructed [INFO] [stdout] --> src/entity/track.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct TrackWrite { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `API` is never used [INFO] [stdout] --> src/api/maloja_2.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const API: ScrobbleAPI = ScrobbleAPI { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackRead` is never constructed [INFO] [stdout] --> src/entity/track.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct TrackRead { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_routes` is never used [INFO] [stdout] --> src/api/maloja_2.rs:32:4 [INFO] [stdout] | [INFO] [stdout] 32 | fn register_routes(mut router: OpenApiRouter) -> OpenApiRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/album_artist.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiDoc` is never constructed [INFO] [stdout] --> src/api/maloja_2.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct ApiDoc; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/album_artist.rs:14:10 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `APIError` is never constructed [INFO] [stdout] --> src/api/maloja_2.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | struct APIError { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/track_artist.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/track_artist.rs:16:10 [INFO] [stdout] | [INFO] [stdout] 16 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_response` is never used [INFO] [stdout] --> src/api/maloja_2.rs:67:4 [INFO] [stdout] | [INFO] [stdout] 67 | fn create_response(e: &MalojaError, code: StatusCode, description: String) -> Response { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Path` is never constructed [INFO] [stdout] --> src/api/maloja_2.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 93 | struct Path(T); [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_server` is never used [INFO] [stdout] --> src/server/mod.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn run_server() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_last_ranges` is never used [INFO] [stdout] --> src/server/pages.rs:32:4 [INFO] [stdout] | [INFO] [stdout] 32 | fn get_last_ranges(amount: usize) -> Vec<(RangeType, Vec)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `notfound` is never used [INFO] [stdout] --> src/api/maloja_2.rs:141:14 [INFO] [stdout] | [INFO] [stdout] 141 | pub async fn notfound() -> Response { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | struct ArtistPage { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_artist` is never used [INFO] [stdout] --> src/api/maloja_2.rs:159:10 [INFO] [stdout] | [INFO] [stdout] 159 | async fn info_artist(Path(params_path): Path) -> Result<(StatusCode, Json), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_track` is never used [INFO] [stdout] --> src/api/maloja_2.rs:175:10 [INFO] [stdout] | [INFO] [stdout] 175 | async fn info_track(Path(params_path): Path) -> Result<(StatusCode, Json), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_artist` is never used [INFO] [stdout] --> src/server/pages.rs:54:14 [INFO] [stdout] | [INFO] [stdout] 54 | pub async fn info_artist(Path(params_path): Path) -> Response { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_album` is never used [INFO] [stdout] --> src/api/maloja_2.rs:190:10 [INFO] [stdout] | [INFO] [stdout] 190 | async fn info_album(Path(params_path): Path) -> Result<(StatusCode, Json), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | struct TrackPage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_tracks` is never used [INFO] [stdout] --> src/api/maloja_2.rs:207:10 [INFO] [stdout] | [INFO] [stdout] 207 | async fn charts_tracks( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_track` is never used [INFO] [stdout] --> src/server/pages.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | pub async fn info_track(Path(params_path): Path) -> Response { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlbumPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | struct AlbumPage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_artists` is never used [INFO] [stdout] --> src/api/maloja_2.rs:236:10 [INFO] [stdout] | [INFO] [stdout] 236 | async fn charts_artists( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_albums` is never used [INFO] [stdout] --> src/api/maloja_2.rs:261:10 [INFO] [stdout] | [INFO] [stdout] 261 | async fn charts_albums( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_album` is never used [INFO] [stdout] --> src/server/pages.rs:127:14 [INFO] [stdout] | [INFO] [stdout] 127 | pub async fn info_album(Path(params_path): Path) -> Response { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AboutPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 156 | struct AboutPage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scrobbles` is never used [INFO] [stdout] --> src/api/maloja_2.rs:290:10 [INFO] [stdout] | [INFO] [stdout] 290 | async fn scrobbles( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `about` is never used [INFO] [stdout] --> src/server/pages.rs:159:14 [INFO] [stdout] | [INFO] [stdout] 159 | pub async fn about() -> Response { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pulse` is never used [INFO] [stdout] --> src/api/maloja_2.rs:315:10 [INFO] [stdout] | [INFO] [stdout] 315 | async fn pulse( [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `performance` is never used [INFO] [stdout] --> src/api/maloja_2.rs:344:10 [INFO] [stdout] | [INFO] [stdout] 344 | async fn performance( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TIMEZONE` is never used [INFO] [stdout] --> src/timeranges.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const TIMEZONE: Tz = Tz::Europe__Vienna; //AEIOU [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `FOLDERS` is never used [INFO] [stdout] --> src/configuration/mod.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub static FOLDERS: LazyLock = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WEEK_BEGIN` is never used [INFO] [stdout] --> src/timeranges.rs:10:7 [INFO] [stdout] | [INFO] [stdout] 10 | const WEEK_BEGIN: Weekday = Weekday::Sun; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FIRST_STAMP` is never used [INFO] [stdout] --> src/timeranges.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const FIRST_STAMP: i64 = 825092900; //TODO [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `CONFIG` is never used [INFO] [stdout] --> src/configuration/mod.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 62 | pub static CONFIG: LazyLock = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ALL_TIME` is never used [INFO] [stdout] --> src/timeranges.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub const ALL_TIME: TimeRange = TimeRange::Infinite {}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApplicationFolders` is never constructed [INFO] [stdout] --> src/configuration/mod.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct ApplicationFolders { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaConfig` is never constructed [INFO] [stdout] --> src/configuration/mod.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct MalojaConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BaseTimeRange` is never used [INFO] [stdout] --> src/timeranges.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum BaseTimeRange { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_config_file_path` is never used [INFO] [stdout] --> src/configuration/mod.rs:143:4 [INFO] [stdout] | [INFO] [stdout] 143 | fn get_config_file_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_config_template` is never used [INFO] [stdout] --> src/configuration/mod.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn create_config_template() -> io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_logfile_path` is never used [INFO] [stdout] --> src/configuration/logging.rs:8:4 [INFO] [stdout] | [INFO] [stdout] 8 | fn get_logfile_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `setup_logger` is never used [INFO] [stdout] --> src/configuration/logging.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn setup_logger() -> Result<(), fern::InitError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `display_path` is never used [INFO] [stdout] --> src/configuration/logging.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn display_path(path: &PathBuf) -> ColoredString { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `display_envvar` is never used [INFO] [stdout] --> src/configuration/logging.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn display_envvar(var: &str) -> ColoredString { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `display_url` is never used [INFO] [stdout] --> src/configuration/logging.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn display_url(var: &str) -> ColoredString { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_database_path` is never used [INFO] [stdout] --> src/database/mod.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn get_database_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_db` is never used [INFO] [stdout] --> src/database/mod.rs:25:14 [INFO] [stdout] | [INFO] [stdout] 25 | pub async fn init_db() -> Result<(), MalojaError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mark_db_write` is never used [INFO] [stdout] --> src/database/mod.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn mark_db_write() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `connect` is never used [INFO] [stdout] --> src/database/mod.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | pub async fn connect() -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tables` is never used [INFO] [stdout] --> src/database/mod.rs:72:14 [INFO] [stdout] | [INFO] [stdout] 72 | pub async fn create_tables(db: &DbConn) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_table` is never used [INFO] [stdout] --> src/database/mod.rs:85:10 [INFO] [stdout] | [INFO] [stdout] 85 | async fn create_table(db: &DbConn, entity: E) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Charts` is never constructed [INFO] [stdout] --> src/database/views.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Charts { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Top` is never constructed [INFO] [stdout] --> src/database/views.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Top { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Paginated` is never constructed [INFO] [stdout] --> src/database/views.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct Paginated { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PaginationInfo` is never constructed [INFO] [stdout] --> src/database/views.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct PaginationInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChartsEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct ChartsEntry { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TopEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct TopEntry { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PulseEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct PulseEntry { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PerformanceEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct PerformanceEntry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `import` is never used [INFO] [stdout] --> src/database/import.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub async fn import() -> Result<(i32, i32), io::Error> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExport` is never constructed [INFO] [stdout] --> src/database/import.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 48 | struct MalojaExport { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExportScrobble` is never constructed [INFO] [stdout] --> src/database/import.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | struct MalojaExportScrobble { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExportTrack` is never constructed [INFO] [stdout] --> src/database/import.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | struct MalojaExportTrack { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RangeType` is never used [INFO] [stdout] --> src/timeranges.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum RangeType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TimeRange` is never used [INFO] [stdout] --> src/timeranges.rs:33:10 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum TimeRange { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MalojaExportAlbum` is never constructed [INFO] [stdout] --> src/database/import.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | struct MalojaExportAlbum { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `import_maloja` is never used [INFO] [stdout] --> src/database/import.rs:73:14 [INFO] [stdout] | [INFO] [stdout] 73 | pub async fn import_maloja(file: PathBuf) -> Result<(), MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BATCH_SIZE` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const BATCH_SIZE: usize = 250; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:19:4 [INFO] [stdout] | [INFO] [stdout] 19 | fn normalize(input: &str) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `datetime_boundaries`, `previous`, `next`, `describe`, and `describe_simple` are never used [INFO] [stdout] --> src/timeranges.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl BaseTimeRange { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 43 | fn datetime_boundaries(&self) -> (DateTime, DateTime) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | fn previous(&self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn next(&self) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn describe(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn describe_simple(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_or_create_artists` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub async fn get_or_create_artists(input: Vec) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_or_create_tracks` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:131:14 [INFO] [stdout] | [INFO] [stdout] 131 | pub async fn get_or_create_tracks(input: Vec) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_or_create_albums` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:292:14 [INFO] [stdout] | [INFO] [stdout] 292 | pub async fn get_or_create_albums(input: Vec) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_scrobbles` is never used [INFO] [stdout] --> src/database/repository/get_or_create.rs:428:14 [INFO] [stdout] | [INFO] [stdout] 428 | pub async fn create_scrobbles(input: Vec, fail_on_existing: bool) -> Result, MalojaE... [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_track_ids` is never used [INFO] [stdout] --> src/database/repository/resolve.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub async fn resolve_track_ids(ids: Vec, db: &DatabaseConnection) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/timeranges.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 165 | impl TimeRange { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 166 | [INFO] [stdout] 167 | pub fn timestamp_boundaries(&self) -> (i64, i64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | fn datetime_boundaries(&self) -> (DateTime, DateTime) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn previous(&self) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | fn next(&self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn includes(&self, timestamp: i64) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub fn validate(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 240 | pub fn get_subranges(&self, subrange_type: RangeType) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | fn describe(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | fn describe_simple(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_album_ids` is never used [INFO] [stdout] --> src/database/repository/resolve.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | pub async fn resolve_album_ids(ids: Vec, db: &DatabaseConnection) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_artist_ids` is never used [INFO] [stdout] --> src/database/repository/resolve.rs:73:14 [INFO] [stdout] | [INFO] [stdout] 73 | pub async fn resolve_artist_ids(ids: Vec, db: &DatabaseConnection) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryPagination` is never constructed [INFO] [stdout] --> src/uri.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct QueryPagination { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_tracks` is never used [INFO] [stdout] --> src/database/repository/stats.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 22 | pub async fn charts_tracks(timerange: TimeRange, artist_id: Option, album_id: Option) -> Result>, Ma... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `paginate_results` is never used [INFO] [stdout] --> src/uri.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl QueryPagination { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 18 | pub fn paginate_results(&self, results: Vec) -> Paginated { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_artists` is never used [INFO] [stdout] --> src/database/repository/stats.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | pub async fn charts_artists(timerange: TimeRange) -> Result>, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryTimerange` is never constructed [INFO] [stdout] --> src/uri.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct QueryTimerange { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `charts_albums` is never used [INFO] [stdout] --> src/database/repository/stats.rs:100:14 [INFO] [stdout] | [INFO] [stdout] 100 | pub async fn charts_albums(timerange: TimeRange, artist_id: Option) -> Result>, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `artist_info` is never used [INFO] [stdout] --> src/database/repository/info.rs:9:14 [INFO] [stdout] | [INFO] [stdout] 9 | pub async fn artist_info(artist_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_timerange` and `match_string` are never used [INFO] [stdout] --> src/uri.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl QueryTimerange { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 55 | pub fn to_timerange(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | fn match_string(input: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `track_info` is never used [INFO] [stdout] --> src/database/repository/info.rs:18:14 [INFO] [stdout] | [INFO] [stdout] 18 | pub async fn track_info(track_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryTimesteps` is never constructed [INFO] [stdout] --> src/uri.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | pub struct QueryTimesteps { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `album_info` is never used [INFO] [stdout] --> src/database/repository/info.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub async fn album_info(album_id: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scrobbles` is never used [INFO] [stdout] --> src/database/repository/scrobbles.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn scrobbles(timerange: TimeRange, artist_id: Option, album_id: Option, track_id: Option, new_to_old: bool) -> R... [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_type` is never used [INFO] [stdout] --> src/uri.rs:111:12 [INFO] [stdout] | [INFO] [stdout] 110 | impl QueryTimesteps { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] 111 | pub fn to_type(&self) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryLimitArtist` is never constructed [INFO] [stdout] --> src/uri.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct QueryLimitArtist { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_artist_id` is never used [INFO] [stdout] --> src/uri.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 130 | impl QueryLimitArtist { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 131 | pub fn to_artist_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryLimitAlbum` is never constructed [INFO] [stdout] --> src/uri.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct QueryLimitAlbum { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_album_id` is never used [INFO] [stdout] --> src/uri.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 144 | impl QueryLimitAlbum { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 145 | pub fn to_album_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryLimitTrack` is never constructed [INFO] [stdout] --> src/uri.rs:152:12 [INFO] [stdout] | [INFO] [stdout] 152 | pub struct QueryLimitTrack{ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_track_id` is never used [INFO] [stdout] --> src/uri.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 158 | impl QueryLimitTrack { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 159 | pub fn to_track_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PathEntity` is never constructed [INFO] [stdout] --> src/uri.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct PathEntity { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `common` is never used [INFO] [stdout] --> src/tests/mod.rs:6:10 [INFO] [stdout] | [INFO] [stdout] 6 | async fn common() { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ARTIST_PRENAMES_FEMALE` is never used [INFO] [stdout] --> src/tests/fixtures.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const ARTIST_PRENAMES_FEMALE: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ARTIST_PRENAMES_MALE` is never used [INFO] [stdout] --> src/tests/fixtures.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const ARTIST_PRENAMES_MALE: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ARTIST_PARTICLES_SHARED` is never used [INFO] [stdout] --> src/tests/fixtures.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const ARTIST_PARTICLES_SHARED: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ARTIST_PARTICLES_FEMALE` is never used [INFO] [stdout] --> src/tests/fixtures.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const ARTIST_PARTICLES_FEMALE: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ARTIST_PARTICLES_MALE` is never used [INFO] [stdout] --> src/tests/fixtures.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const ARTIST_PARTICLES_MALE: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ARTIST_SURNAMES` is never used [INFO] [stdout] --> src/tests/fixtures.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 31 | const ARTIST_SURNAMES: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SONG_DETERMINERS` is never used [INFO] [stdout] --> src/tests/fixtures.rs:36:7 [INFO] [stdout] | [INFO] [stdout] 36 | const SONG_DETERMINERS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SONG_NOUNS` is never used [INFO] [stdout] --> src/tests/fixtures.rs:39:7 [INFO] [stdout] | [INFO] [stdout] 39 | const SONG_NOUNS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SONG_PREPOSITIONS` is never used [INFO] [stdout] --> src/tests/fixtures.rs:42:7 [INFO] [stdout] | [INFO] [stdout] 42 | const SONG_PREPOSITIONS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SONG_NOUNS_PLURAL` is never used [INFO] [stdout] --> src/tests/fixtures.rs:46:7 [INFO] [stdout] | [INFO] [stdout] 46 | const SONG_NOUNS_PLURAL: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fixture` is never used [INFO] [stdout] --> src/tests/fixtures.rs:53:14 [INFO] [stdout] | [INFO] [stdout] 53 | pub async fn fixture() { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pulse` is never used [INFO] [stdout] --> src/database/repository/history.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | pub async fn pulse(sub_ranges: Vec, artist_id: Option, album_id: Option, track_id: Option) -> Result src/database/repository/history.rs:24:14 [INFO] [stdout] | [INFO] [stdout] 24 | pub async fn performance(sub_ranges: Vec, artist_id: Option, album_id: Option, track_id: Option) -> Result src/database/errors.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum MalojaError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/album.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/album.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlbumWrite` is never constructed [INFO] [stdout] --> src/entity/album.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 52 | pub struct AlbumWrite { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlbumRead` is never constructed [INFO] [stdout] --> src/entity/album.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct AlbumRead { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/artist.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/artist.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistWrite` is never constructed [INFO] [stdout] --> src/entity/artist.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct ArtistWrite { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistRead` is never constructed [INFO] [stdout] --> src/entity/artist.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct ArtistRead { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistReadContext` is never constructed [INFO] [stdout] --> src/entity/artist.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct ArtistReadContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/scrobble.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/scrobble.rs:29:10 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScrobbleWrite` is never constructed [INFO] [stdout] --> src/entity/scrobble.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct ScrobbleWrite { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScrobbleRead` is never constructed [INFO] [stdout] --> src/entity/scrobble.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct ScrobbleRead { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/track.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/track.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackWrite` is never constructed [INFO] [stdout] --> src/entity/track.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct TrackWrite { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackRead` is never constructed [INFO] [stdout] --> src/entity/track.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct TrackRead { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/album_artist.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/album_artist.rs:14:10 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Model` is never constructed [INFO] [stdout] --> src/entity/track_artist.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Model { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Relation` is never used [INFO] [stdout] --> src/entity/track_artist.rs:16:10 [INFO] [stdout] | [INFO] [stdout] 16 | pub enum Relation { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/database/import.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | create_scrobbles(scrobbles, false).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 127 | let _ = create_scrobbles(scrobbles, false).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_server` is never used [INFO] [stdout] --> src/server/mod.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub async fn run_server() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_last_ranges` is never used [INFO] [stdout] --> src/server/pages.rs:32:4 [INFO] [stdout] | [INFO] [stdout] 32 | fn get_last_ranges(amount: usize) -> Vec<(RangeType, Vec)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ArtistPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | struct ArtistPage { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_artist` is never used [INFO] [stdout] --> src/server/pages.rs:54:14 [INFO] [stdout] | [INFO] [stdout] 54 | pub async fn info_artist(Path(params_path): Path) -> Response { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | struct TrackPage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_track` is never used [INFO] [stdout] --> src/server/pages.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | pub async fn info_track(Path(params_path): Path) -> Response { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlbumPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | struct AlbumPage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `info_album` is never used [INFO] [stdout] --> src/server/pages.rs:127:14 [INFO] [stdout] | [INFO] [stdout] 127 | pub async fn info_album(Path(params_path): Path) -> Response { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AboutPage` is never constructed [INFO] [stdout] --> src/server/pages.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 156 | struct AboutPage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `about` is never used [INFO] [stdout] --> src/server/pages.rs:159:14 [INFO] [stdout] | [INFO] [stdout] 159 | pub async fn about() -> Response { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TIMEZONE` is never used [INFO] [stdout] --> src/timeranges.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const TIMEZONE: Tz = Tz::Europe__Vienna; //AEIOU [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WEEK_BEGIN` is never used [INFO] [stdout] --> src/timeranges.rs:10:7 [INFO] [stdout] | [INFO] [stdout] 10 | const WEEK_BEGIN: Weekday = Weekday::Sun; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FIRST_STAMP` is never used [INFO] [stdout] --> src/timeranges.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const FIRST_STAMP: i64 = 825092900; //TODO [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ALL_TIME` is never used [INFO] [stdout] --> src/timeranges.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub const ALL_TIME: TimeRange = TimeRange::Infinite {}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BaseTimeRange` is never used [INFO] [stdout] --> src/timeranges.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum BaseTimeRange { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RangeType` is never used [INFO] [stdout] --> src/timeranges.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum RangeType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TimeRange` is never used [INFO] [stdout] --> src/timeranges.rs:33:10 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum TimeRange { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `datetime_boundaries`, `previous`, `next`, `describe`, and `describe_simple` are never used [INFO] [stdout] --> src/timeranges.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl BaseTimeRange { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 43 | fn datetime_boundaries(&self) -> (DateTime, DateTime) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | fn previous(&self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn next(&self) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn describe(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn describe_simple(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/timeranges.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 165 | impl TimeRange { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 166 | [INFO] [stdout] 167 | pub fn timestamp_boundaries(&self) -> (i64, i64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | fn datetime_boundaries(&self) -> (DateTime, DateTime) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn previous(&self) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | fn next(&self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn includes(&self, timestamp: i64) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub fn validate(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 240 | pub fn get_subranges(&self, subrange_type: RangeType) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | fn describe(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | fn describe_simple(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryPagination` is never constructed [INFO] [stdout] --> src/uri.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct QueryPagination { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `paginate_results` is never used [INFO] [stdout] --> src/uri.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl QueryPagination { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 18 | pub fn paginate_results(&self, results: Vec) -> Paginated { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryTimerange` is never constructed [INFO] [stdout] --> src/uri.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct QueryTimerange { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_timerange` and `match_string` are never used [INFO] [stdout] --> src/uri.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl QueryTimerange { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 55 | pub fn to_timerange(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | fn match_string(input: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryTimesteps` is never constructed [INFO] [stdout] --> src/uri.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | pub struct QueryTimesteps { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_type` is never used [INFO] [stdout] --> src/uri.rs:111:12 [INFO] [stdout] | [INFO] [stdout] 110 | impl QueryTimesteps { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] 111 | pub fn to_type(&self) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryLimitArtist` is never constructed [INFO] [stdout] --> src/uri.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct QueryLimitArtist { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_artist_id` is never used [INFO] [stdout] --> src/uri.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 130 | impl QueryLimitArtist { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 131 | pub fn to_artist_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryLimitAlbum` is never constructed [INFO] [stdout] --> src/uri.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct QueryLimitAlbum { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_album_id` is never used [INFO] [stdout] --> src/uri.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 144 | impl QueryLimitAlbum { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 145 | pub fn to_album_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryLimitTrack` is never constructed [INFO] [stdout] --> src/uri.rs:152:12 [INFO] [stdout] | [INFO] [stdout] 152 | pub struct QueryLimitTrack{ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_track_id` is never used [INFO] [stdout] --> src/uri.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 158 | impl QueryLimitTrack { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 159 | pub fn to_track_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PathEntity` is never constructed [INFO] [stdout] --> src/uri.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct PathEntity { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/tests/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | fs::remove_dir_all("./testing/data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 11 | let _ = fs::remove_dir_all("./testing/data"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/tests/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | fs::remove_dir_all("./testing/config"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 12 | let _ = fs::remove_dir_all("./testing/config"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/tests/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | fs::remove_dir_all("./testing/log"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 13 | let _ = fs::remove_dir_all("./testing/log"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/database/import.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | create_scrobbles(scrobbles, false).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 127 | let _ = create_scrobbles(scrobbles, false).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/database/views.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/database/import.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsString` [INFO] [stdout] --> src/database/import.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ffi::OsString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConnectionTrait`, `DatabaseConnection`, `DbErr`, and `EntityTrait` [INFO] [stdout] --> src/database/import.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use sea_orm::{ConnectionTrait, DatabaseConnection, DbErr, EntityTrait}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/database/import.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ColumnType::Json` [INFO] [stdout] --> src/database/import.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use sea_orm::ColumnType::Json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `album::ActiveModel as AlbumModel`, `album::Entity as AlbumEntity`, `artist::ActiveModel as ArtistModel`, `artist::Entity as ArtistEntity`, `scrobble::ActiveModel as ScrobbleModel`, `scrobble::Entity as ScrobbleEntity`, `track::ActiveModel as TrackModel`, and `track::Entity as TrackEntity` [INFO] [stdout] --> src/database/import.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | scrobble::Entity as ScrobbleEntity, scrobble::ActiveModel as ScrobbleModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | track::Entity as TrackEntity, track::ActiveModel as TrackModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | album::Entity as AlbumEntity, album::ActiveModel as AlbumModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | artist::Entity as ArtistEntity, artist::ActiveModel as ArtistModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/get_or_create.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, NotSet, QueryFilter}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AlbumRead`, `ArtistRead`, and `TrackRead` [INFO] [stdout] --> src/database/repository/get_or_create.rs:8:119 [INFO] [stdout] | [INFO] [stdout] 8 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 9 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 10 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Column as ScrobbleColumn`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/resolve.rs:4:30 [INFO] [stdout] | [INFO] [stdout] 4 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 5 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 6 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead, A... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 7 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 8 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/stats.rs:1:28 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, JoinType, QueryFilter, QueryOrder, QuerySelect, RelationTrait}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/stats.rs:9:30 [INFO] [stdout] | [INFO] [stdout] 9 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 10 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 11 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 12 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 13 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel, Column as TrackArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel, Column as AlbumArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::DbErr` [INFO] [stdout] --> src/database/repository/info.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::DbErr; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Entity as TrackEntity` and `TrackRead` [INFO] [stdout] --> src/database/repository/scrobbles.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::entity::track::{TrackRead, Entity as TrackEntity, Column as TrackColumn, Relation as TrackRelation}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::entity::scrobble::ScrobbleRead` [INFO] [stdout] --> src/database/repository/history.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::entity::scrobble::ScrobbleRead; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RangeType` [INFO] [stdout] --> src/database/repository/history.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::timeranges::{RangeType, TimeRange}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::http::StatusCode` [INFO] [stdout] --> src/database/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use axum::http::StatusCode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::Json` [INFO] [stdout] --> src/database/errors.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use axum::Json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IntoResponse` and `Response` [INFO] [stdout] --> src/database/errors.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{IntoResponse, Response}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `strum` [INFO] [stdout] --> src/database/errors.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use strum; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/database/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/mod.rs:17:97 [INFO] [stdout] | [INFO] [stdout] 17 | use sea_orm::{ConnectOptions, ConnectionTrait, Database, DatabaseConnection, DbBackend, DbConn, DbErr, Schema, Statement}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/album.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/entity/artist.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/entity/scrobble.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/track.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dynja::minijinja::functions::range` [INFO] [stdout] --> src/server/pages.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use dynja::minijinja::functions::range; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Html`, `IntoResponse`, and `Response` [INFO] [stdout] --> src/server/mod.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{Html, IntoResponse, Response}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Json` [INFO] [stdout] --> src/server/mod.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | use axum::{Json, Router}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `NaiveDateTime` [INFO] [stdout] --> src/timeranges.rs:2:77 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Deserializer` [INFO] [stdout] --> src/timeranges.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use serde::{Deserialize, Deserializer, Serialize, Serializer}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PartialSchema` [INFO] [stdout] --> src/timeranges.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use utoipa::{PartialSchema, ToSchema}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RefOr` and `Schema` [INFO] [stdout] --> src/timeranges.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use utoipa::openapi::{RefOr, Schema}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/timeranges.rs:59:43 [INFO] [stdout] | [INFO] [stdout] 59 | let first_week_start = if (use_offset >= 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 59 - let first_week_start = if (use_offset >= 0) { [INFO] [stdout] 59 + let first_week_start = if use_offset >= 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/timeranges.rs:234:17 [INFO] [stdout] | [INFO] [stdout] 234 | (s < e) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 234 - (s < e) [INFO] [stdout] 234 + s < e [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/uri.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/uri.rs:3:26 [INFO] [stdout] | [INFO] [stdout] 3 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/uri.rs:22:25 [INFO] [stdout] | [INFO] [stdout] 22 | let end_index = (start_index + per_page as usize); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 22 - let end_index = (start_index + per_page as usize); [INFO] [stdout] 22 + let end_index = start_index + per_page as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug` and `warn` [INFO] [stdout] --> src/main.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | use log::{debug, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/database/views.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/database/import.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsString` [INFO] [stdout] --> src/database/import.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ffi::OsString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConnectionTrait`, `DatabaseConnection`, `DbErr`, and `EntityTrait` [INFO] [stdout] --> src/database/import.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use sea_orm::{ConnectionTrait, DatabaseConnection, DbErr, EntityTrait}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/database/import.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ColumnType::Json` [INFO] [stdout] --> src/database/import.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use sea_orm::ColumnType::Json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `album::ActiveModel as AlbumModel`, `album::Entity as AlbumEntity`, `artist::ActiveModel as ArtistModel`, `artist::Entity as ArtistEntity`, `scrobble::ActiveModel as ScrobbleModel`, `scrobble::Entity as ScrobbleEntity`, `track::ActiveModel as TrackModel`, and `track::Entity as TrackEntity` [INFO] [stdout] --> src/database/import.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | scrobble::Entity as ScrobbleEntity, scrobble::ActiveModel as ScrobbleModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | track::Entity as TrackEntity, track::ActiveModel as TrackModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | album::Entity as AlbumEntity, album::ActiveModel as AlbumModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | artist::Entity as ArtistEntity, artist::ActiveModel as ArtistModel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/get_or_create.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, NotSet, QueryFilter}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AlbumRead`, `ArtistRead`, and `TrackRead` [INFO] [stdout] --> src/database/repository/get_or_create.rs:8:119 [INFO] [stdout] | [INFO] [stdout] 8 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 9 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 10 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Column as ScrobbleColumn`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/resolve.rs:4:30 [INFO] [stdout] | [INFO] [stdout] 4 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 5 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 6 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead, A... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 7 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 8 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/repository/stats.rs:1:28 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::{ColumnTrait, DbErr, EntityTrait, JoinType, QueryFilter, QueryOrder, QuerySelect, RelationTrait}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ActiveModel as AlbumActiveModel`, `ActiveModel as AlbumArtistActiveModel`, `ActiveModel as ArtistActiveModel`, `ActiveModel as ScrobbleActiveModel`, `ActiveModel as TrackActiveModel`, `ActiveModel as TrackArtistActiveModel`, `AlbumWrite`, `ArtistWrite`, `Entity as AlbumArtist`, `Entity as Scrobble`, `Entity as TrackArtist`, `Model as AlbumModel`, `Model as ArtistModel`, `Model as ScrobbleModel`, `Model as TrackModel`, `ScrobbleWrite`, and `TrackWrite` [INFO] [stdout] --> src/database/repository/stats.rs:9:30 [INFO] [stdout] | [INFO] [stdout] 9 | album::{Entity as Album, Model as AlbumModel, ActiveModel as AlbumActiveModel, Column as AlbumColumn, AlbumWrite, AlbumRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 10 | track::{Entity as Track, Model as TrackModel, ActiveModel as TrackActiveModel, Column as TrackColumn, TrackWrite, TrackRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] 11 | artist::{Entity as Artist, Model as ArtistModel, ActiveModel as ArtistActiveModel, Column as ArtistColumn, ArtistWrite, ArtistRead}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 12 | scrobble::{Entity as Scrobble, Model as ScrobbleModel, ActiveModel as ScrobbleActiveModel, Column as ScrobbleColumn, ScrobbleWrite}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] 13 | track_artist::{Entity as TrackArtist, ActiveModel as TrackArtistActiveModel, Column as TrackArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | album_artist::{Entity as AlbumArtist, ActiveModel as AlbumArtistActiveModel, Column as AlbumArtistColumn}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::DbErr` [INFO] [stdout] --> src/database/repository/info.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::DbErr; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Entity as TrackEntity` and `TrackRead` [INFO] [stdout] --> src/database/repository/scrobbles.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::entity::track::{TrackRead, Entity as TrackEntity, Column as TrackColumn, Relation as TrackRelation}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::entity::scrobble::ScrobbleRead` [INFO] [stdout] --> src/database/repository/history.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::entity::scrobble::ScrobbleRead; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RangeType` [INFO] [stdout] --> src/database/repository/history.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::timeranges::{RangeType, TimeRange}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::http::StatusCode` [INFO] [stdout] --> src/database/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use axum::http::StatusCode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `axum::Json` [INFO] [stdout] --> src/database/errors.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use axum::Json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IntoResponse` and `Response` [INFO] [stdout] --> src/database/errors.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{IntoResponse, Response}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `strum` [INFO] [stdout] --> src/database/errors.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use strum; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/database/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DbErr` [INFO] [stdout] --> src/database/mod.rs:17:97 [INFO] [stdout] | [INFO] [stdout] 17 | use sea_orm::{ConnectOptions, ConnectionTrait, Database, DatabaseConnection, DbBackend, DbConn, DbErr, Schema, Statement}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/album.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sea_orm::ActiveValue::Set` [INFO] [stdout] --> src/entity/artist.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use sea_orm::ActiveValue::Set; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/entity/scrobble.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ArtistRead` [INFO] [stdout] --> src/entity/track.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use super::artist::{ArtistRead, ArtistReadContext, ArtistWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dynja::minijinja::functions::range` [INFO] [stdout] --> src/server/pages.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use dynja::minijinja::functions::range; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Html`, `IntoResponse`, and `Response` [INFO] [stdout] --> src/server/mod.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use axum::response::{Html, IntoResponse, Response}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Json` [INFO] [stdout] --> src/server/mod.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | use axum::{Json, Router}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `NaiveDateTime` [INFO] [stdout] --> src/timeranges.rs:2:77 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Deserializer` [INFO] [stdout] --> src/timeranges.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use serde::{Deserialize, Deserializer, Serialize, Serializer}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PartialSchema` [INFO] [stdout] --> src/timeranges.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use utoipa::{PartialSchema, ToSchema}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RefOr` and `Schema` [INFO] [stdout] --> src/timeranges.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use utoipa::openapi::{RefOr, Schema}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/timeranges.rs:59:43 [INFO] [stdout] | [INFO] [stdout] 59 | let first_week_start = if (use_offset >= 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 59 - let first_week_start = if (use_offset >= 0) { [INFO] [stdout] 59 + let first_week_start = if use_offset >= 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/timeranges.rs:234:17 [INFO] [stdout] | [INFO] [stdout] 234 | (s < e) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 234 - (s < e) [INFO] [stdout] 234 + s < e [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/uri.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/uri.rs:3:26 [INFO] [stdout] | [INFO] [stdout] 3 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/uri.rs:22:25 [INFO] [stdout] | [INFO] [stdout] 22 | let end_index = (start_index + per_page as usize); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 22 - let end_index = (start_index + per_page as usize); [INFO] [stdout] 22 + let end_index = start_index + per_page as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug` and `warn` [INFO] [stdout] --> src/main.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | use log::{debug, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/api/maloja_2.rs:121:54 [INFO] [stdout] | [INFO] [stdout] 121 | PathRejection::MissingPathParams(error) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/api/maloja_2.rs:121:54 [INFO] [stdout] | [INFO] [stdout] 121 | PathRejection::MissingPathParams(error) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/import.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | let result = match entry.file_name().to_str() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/import.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 44 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | let db_result = Artist::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/import.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | let result = match entry.file_name().to_str() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/import.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 44 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | let db_result = Artist::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:150:10 [INFO] [stdout] | [INFO] [stdout] 150 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:268:21 [INFO] [stdout] | [INFO] [stdout] 268 | let db_result = TrackArtist::insert_many(track_artist_inserts_primary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:271:21 [INFO] [stdout] | [INFO] [stdout] 271 | let db_result = TrackArtist::insert_many(track_artist_inserts_secondary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:150:10 [INFO] [stdout] | [INFO] [stdout] 150 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:268:21 [INFO] [stdout] | [INFO] [stdout] 268 | let db_result = TrackArtist::insert_many(track_artist_inserts_primary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:271:21 [INFO] [stdout] | [INFO] [stdout] 271 | let db_result = TrackArtist::insert_many(track_artist_inserts_secondary).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:307:10 [INFO] [stdout] | [INFO] [stdout] 307 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:408:21 [INFO] [stdout] | [INFO] [stdout] 408 | let db_result = AlbumArtist::insert_many(album_artist_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:307:10 [INFO] [stdout] | [INFO] [stdout] 307 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:408:21 [INFO] [stdout] | [INFO] [stdout] 408 | let db_result = AlbumArtist::insert_many(album_artist_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fail_on_existing` [INFO] [stdout] --> src/database/repository/get_or_create.rs:428:58 [INFO] [stdout] | [INFO] [stdout] 428 | ...ec, fail_on_existing: bool) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fail_on_existing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:448:10 [INFO] [stdout] | [INFO] [stdout] 448 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:492:17 [INFO] [stdout] | [INFO] [stdout] 492 | let db_result = Scrobble::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fail_on_existing` [INFO] [stdout] --> src/database/repository/get_or_create.rs:428:58 [INFO] [stdout] | [INFO] [stdout] 428 | ...ec, fail_on_existing: bool) -> Result, MalojaError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fail_on_existing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/database/repository/get_or_create.rs:448:10 [INFO] [stdout] | [INFO] [stdout] 448 | for (index, inp) in input.iter().enumerate() { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db_result` [INFO] [stdout] --> src/database/repository/get_or_create.rs:492:17 [INFO] [stdout] | [INFO] [stdout] 492 | let db_result = Scrobble::insert_many(chunk_inserts).exec(&db).await.unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:52:43 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:52:54 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:86:43 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:86:54 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:52:43 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:52:54 [INFO] [stdout] | [INFO] [stdout] 52 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/database/repository/stats.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | let mut query = Artist::find() [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:127:43 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:127:54 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:86:43 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:86:54 [INFO] [stdout] | [INFO] [stdout] 86 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/database/repository/stats.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | let mut query = Artist::find() [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `scrobbles` [INFO] [stdout] --> src/database/repository/stats.rs:127:43 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scrobbles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rank` [INFO] [stdout] --> src/database/repository/stats.rs:127:54 [INFO] [stdout] | [INFO] [stdout] 127 | let id_list = result.iter().map(|(id, scrobbles, rank)| id.to_owned()).collect(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rank` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `db` [INFO] [stdout] --> src/database/repository/history.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | let db = connect().await?; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/mod.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | let result = db.execute(statement).await.expect("wut"); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/database/mod.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | let result = db.execute(statement).await.expect("wut"); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TimeZone` [INFO] [stdout] --> src/timeranges.rs:2:47 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/api/maloja_2.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TimeZone` [INFO] [stdout] --> src/timeranges.rs:2:47 [INFO] [stdout] | [INFO] [stdout] 2 | use chrono::{naive::Days, DateTime, Datelike, TimeZone, Weekday, NaiveDate, NaiveDateTime, Months, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/api/maloja_2.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dis` [INFO] [stdout] --> src/configuration/logging.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | let dis = fern::Dispatch::new() [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_dis` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dis` [INFO] [stdout] --> src/configuration/logging.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | let dis = fern::Dispatch::new() [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_dis` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:93:20 [INFO] [stdout] | [INFO] [stdout] 93 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:120:20 [INFO] [stdout] | [INFO] [stdout] 120 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:148:34 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:148:40 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `day` [INFO] [stdout] --> src/timeranges.rs:148:47 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^ help: try ignoring the field: `day: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:149:35 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `week` [INFO] [stdout] --> src/timeranges.rs:149:41 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `week: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:150:36 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:150:42 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:151:35 [INFO] [stdout] | [INFO] [stdout] 151 | BaseTimeRange::Year { year } => { dt.format("%Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:200:36 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:200:43 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:214:36 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:214:43 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `base` [INFO] [stdout] --> src/timeranges.rs:231:31 [INFO] [stdout] | [INFO] [stdout] 231 | TimeRange::Simple(base) => true, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_base` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:232:36 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:232:43 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:93:20 [INFO] [stdout] | [INFO] [stdout] 93 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last` [INFO] [stdout] --> src/timeranges.rs:120:20 [INFO] [stdout] | [INFO] [stdout] 120 | let (first,last) = self.datetime_boundaries(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:148:34 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:148:40 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `day` [INFO] [stdout] --> src/timeranges.rs:148:47 [INFO] [stdout] | [INFO] [stdout] 148 | BaseTimeRange::Day { year, month, day } => { dt.format("%d. %B %Y").to_string() } [INFO] [stdout] | ^^^ help: try ignoring the field: `day: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:149:35 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `week` [INFO] [stdout] --> src/timeranges.rs:149:41 [INFO] [stdout] | [INFO] [stdout] 149 | BaseTimeRange::Week { year, week } => { dt.format("Week %-V %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `week: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:150:36 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `month` [INFO] [stdout] --> src/timeranges.rs:150:42 [INFO] [stdout] | [INFO] [stdout] 150 | BaseTimeRange::Month { year, month } => { dt.format("%B %Y").to_string() } [INFO] [stdout] | ^^^^^ help: try ignoring the field: `month: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `year` [INFO] [stdout] --> src/timeranges.rs:151:35 [INFO] [stdout] | [INFO] [stdout] 151 | BaseTimeRange::Year { year } => { dt.format("%Y").to_string() } [INFO] [stdout] | ^^^^ help: try ignoring the field: `year: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:200:36 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:200:43 [INFO] [stdout] | [INFO] [stdout] 200 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:214:36 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:214:43 [INFO] [stdout] | [INFO] [stdout] 214 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `base` [INFO] [stdout] --> src/timeranges.rs:231:31 [INFO] [stdout] | [INFO] [stdout] 231 | TimeRange::Simple(base) => true, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_base` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/timeranges.rs:232:36 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/timeranges.rs:232:43 [INFO] [stdout] | [INFO] [stdout] 232 | TimeRange::Composite { start, end } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/configuration/mod.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct MalojaConfig { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 80 | pub logging: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub image_cache_expire_positive: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub image_cache_expire_negative: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub scrobbles_track_diamond: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub scrobbles_track_platinum: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub scrobbles_track_gold: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub scrobbles_album_diamond: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub scrobbles_album_platinum: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub scrobbles_album_gold: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub last_fm_api_key: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub lastfm_api_secret: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub lastfm_api_sk: Option, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub spotify_api_id: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub spotify_api_secret: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub audiodb_api_key: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub week_offset: u8, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub utc_offset: u8, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub default_albumartist: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub time_format: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MalojaConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Top` is never constructed [INFO] [stdout] --> src/database/views.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Top { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TopEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct TopEntry { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `maloja` is never read [INFO] [stdout] --> src/database/import.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 48 | struct MalojaExport { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 49 | maloja: Value, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MalojaExport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `previous` is never used [INFO] [stdout] --> src/timeranges.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl BaseTimeRange { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | fn previous(&self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `previous` is never used [INFO] [stdout] --> src/timeranges.rs:195:8 [INFO] [stdout] | [INFO] [stdout] 165 | impl TimeRange { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 195 | fn previous(&self) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | database::init_db().await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 35 | let _ = database::init_db().await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/database/import.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | create_scrobbles(scrobbles, false).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 127 | let _ = create_scrobbles(scrobbles, false).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/configuration/mod.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct MalojaConfig { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 80 | pub logging: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub image_cache_expire_positive: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub image_cache_expire_negative: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub scrobbles_track_diamond: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub scrobbles_track_platinum: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub scrobbles_track_gold: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub scrobbles_album_diamond: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub scrobbles_album_platinum: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub scrobbles_album_gold: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub last_fm_api_key: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub lastfm_api_secret: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub lastfm_api_sk: Option, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub spotify_api_id: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub spotify_api_secret: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub audiodb_api_key: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub week_offset: u8, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub utc_offset: u8, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub default_albumartist: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub time_format: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MalojaConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Top` is never constructed [INFO] [stdout] --> src/database/views.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Top { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TopEntry` is never constructed [INFO] [stdout] --> src/database/views.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct TopEntry { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `maloja` is never read [INFO] [stdout] --> src/database/import.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 48 | struct MalojaExport { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 49 | maloja: Value, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MalojaExport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `previous` is never used [INFO] [stdout] --> src/timeranges.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl BaseTimeRange { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | fn previous(&self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `previous` is never used [INFO] [stdout] --> src/timeranges.rs:195:8 [INFO] [stdout] | [INFO] [stdout] 165 | impl TimeRange { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 195 | fn previous(&self) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | database::init_db().await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 35 | let _ = database::init_db().await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/database/import.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | create_scrobbles(scrobbles, false).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 127 | let _ = create_scrobbles(scrobbles, false).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 29s [INFO] running `Command { std: "docker" "inspect" "aba1739a110ef0fb833ba0be0470f29dd746bcec40ebf290d2d151b52dde9b99", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aba1739a110ef0fb833ba0be0470f29dd746bcec40ebf290d2d151b52dde9b99", kill_on_drop: false }` [INFO] [stdout] aba1739a110ef0fb833ba0be0470f29dd746bcec40ebf290d2d151b52dde9b99