[INFO] cloning repository https://github.com/Zanderwohl/chores
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Zanderwohl/chores" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FZanderwohl%2Fchores", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FZanderwohl%2Fchores'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a83dbba15f8a7ea342200712c0292971e57e0af4
[INFO] checking Zanderwohl/chores against try#b98202ad067d72e45cec8be3d5c15d86ef0fd086 for pr-155193
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FZanderwohl%2Fchores" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Zanderwohl/chores
[INFO] finished tweaking git repo https://github.com/Zanderwohl/chores
[INFO] tweaked toml for git repo https://github.com/Zanderwohl/chores written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Zanderwohl/chores on toolchain b98202ad067d72e45cec8be3d5c15d86ef0fd086
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b98202ad067d72e45cec8be3d5c15d86ef0fd086" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Zanderwohl/chores 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" "+b98202ad067d72e45cec8be3d5c15d86ef0fd086" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b98202ad067d72e45cec8be3d5c15d86ef0fd086" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4d2c141a3abb12cac2b41e5434563bb5b25c79deae31577be8c48e5a5fbfc86a
[INFO] running `Command { std: "docker" "start" "-a" "4d2c141a3abb12cac2b41e5434563bb5b25c79deae31577be8c48e5a5fbfc86a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4d2c141a3abb12cac2b41e5434563bb5b25c79deae31577be8c48e5a5fbfc86a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4d2c141a3abb12cac2b41e5434563bb5b25c79deae31577be8c48e5a5fbfc86a", kill_on_drop: false }`
[INFO] [stdout] 4d2c141a3abb12cac2b41e5434563bb5b25c79deae31577be8c48e5a5fbfc86a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b98202ad067d72e45cec8be3d5c15d86ef0fd086" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cc68f682984516a99165119c94cdb9638a68a770ff1dfcceb2456ac341740632
[INFO] running `Command { std: "docker" "start" "-a" "cc68f682984516a99165119c94cdb9638a68a770ff1dfcceb2456ac341740632", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling cc v1.2.49
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling utf8-width v0.1.8
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking phf_shared v0.12.1
[INFO] [stderr]    Compiling html-escape v0.2.13
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking clap_lex v0.7.6
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking phf v0.12.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking dotenvy v0.15.7 (https://github.com/allan2/dotenvy.git?branch=main#86c0d6dd)
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling hypertext-macros v0.12.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking axum-core v0.5.5
[INFO] [stderr]     Checking hypertext v0.12.1
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking axum v0.8.7
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking chores v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NaiveTime`
[INFO] [stdout]  --> src/task.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Duration, NaiveTime, TimeDelta, Utc};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `APP_TIMEZONE` is never used
[INFO] [stdout]  --> src/config.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | static APP_TIMEZONE: OnceLock<Tz> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOUCH_MODE` is never used
[INFO] [stdout]  --> src/config.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static TOUCH_MODE: OnceLock<bool> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_timezone` is never used
[INFO] [stdout]   --> src/config.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn init_timezone(tz_str: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_timezone` is never used
[INFO] [stdout]   --> src/config.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_timezone() -> Tz {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn init_touch_mode(enabled: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_touch_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_completion` is never used
[INFO] [stdout]   --> src/db.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn add_completion(pool: &DbPool, task_id: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_latest_completion` is never used
[INFO] [stdout]    --> src/db.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub async fn get_latest_completion(pool: &DbPool, task_id: &str) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionRecord` is never constructed
[INFO] [stdout]    --> src/db.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct CompletionRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_completions` is never used
[INFO] [stdout]    --> src/db.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn get_all_completions(pool: &DbPool, task_id: &str) -> Result<Vec<CompletionRecord>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/db.rs:145:14
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub async fn delete_completion(pool: &DbPool, completion_id: i64) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbSchedule` is never constructed
[INFO] [stdout]    --> src/db.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbTask` is never constructed
[INFO] [stdout]    --> src/db.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct DbTask {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_time` is never used
[INFO] [stdout]    --> src/db.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn parse_time(s: &Option<String>) -> NaiveTime {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int_list` is never used
[INFO] [stdout]    --> src/db.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_int_list(s: &Option<String>) -> Vec<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_schedule_parts` is never used
[INFO] [stdout]    --> src/db.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl DbSchedule {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 229 |     pub fn to_schedule_parts(&self) -> (ScheduleKind, NDays, NWeeks, Monthwise, WeeksOfMonth, CertainMonths, Once) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task` is never used
[INFO] [stdout]    --> src/db.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub async fn get_task(pool: &DbPool, task_id: i64) -> Result<Option<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_tasks` is never used
[INFO] [stdout]    --> src/db.rs:339:14
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub async fn get_all_tasks(pool: &DbPool) -> Result<Vec<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task_count` is never used
[INFO] [stdout]    --> src/db.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub async fn get_task_count(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tasks_paginated` is never used
[INFO] [stdout]    --> src/db.rs:392:14
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub async fn get_tasks_paginated(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]    --> src/db.rs:451:14
[INFO] [stdout]     |
[INFO] [stdout] 451 | pub async fn save_task(pool: &DbPool, task: &DemoTask) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_task_deleted_at` is never used
[INFO] [stdout]    --> src/db.rs:663:14
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub async fn set_task_deleted_at(pool: &DbPool, task_id: i64, deleted_at: Option<DateTime<Utc>>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScheduleKind` is never used
[INFO] [stdout]   --> src/schedule.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ScheduleKind {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Once` is never constructed
[INFO] [stdout]   --> src/schedule.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Once {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CertainMonths` is never constructed
[INFO] [stdout]    --> src/schedule.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct CertainMonths {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DemoTasksMap` is never used
[INFO] [stdout]    --> src/tasks.rs:142:10
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub type DemoTasksMap = Arc<Mutex<HashMap<String, DemoTask>>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEMO_TASKS` is never used
[INFO] [stdout]    --> src/tasks.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub static DEMO_TASKS: OnceLock<DemoTasksMap> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_demo_tasks` is never used
[INFO] [stdout]    --> src/tasks.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn get_demo_tasks() -> &'static DemoTasksMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_demo_id` is never used
[INFO] [stdout]    --> src/tasks.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_demo_id(id: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `router` is never used
[INFO] [stdout]    --> src/tasks.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn router() -> Router<DbPool> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn complete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:297:10
[INFO] [stdout]     |
[INFO] [stdout] 297 | async fn delete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_task` is never used
[INFO] [stdout]    --> src/tasks.rs:309:10
[INFO] [stdout]     |
[INFO] [stdout] 309 | async fn restore_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_show` is never used
[INFO] [stdout]    --> src/tasks.rs:321:10
[INFO] [stdout]     |
[INFO] [stdout] 321 | async fn task_show(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/tasks.rs:348:10
[INFO] [stdout]     |
[INFO] [stdout] 348 | async fn delete_completion(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homepage` is never used
[INFO] [stdout]    --> src/tasks.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn homepage(State(pool): State<DbPool>) -> Html<String> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub struct DailyQuery {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_today` is never used
[INFO] [stdout]    --> src/tasks.rs:556:14
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub async fn daily_today(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page` is never used
[INFO] [stdout]    --> src/tasks.rs:572:14
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub async fn daily_page(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:579:10
[INFO] [stdout]     |
[INFO] [stdout] 579 | async fn daily_page_inner(pool: &DbPool, year: i32, month: u32, day: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `days_in_month` is never used
[INFO] [stdout]    --> src/tasks.rs:818:4
[INFO] [stdout]     |
[INFO] [stdout] 818 | fn days_in_month(year: i32, month: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CalendarQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:836:12
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub struct CalendarQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_today` is never used
[INFO] [stdout]    --> src/tasks.rs:842:14
[INFO] [stdout]     |
[INFO] [stdout] 842 | pub async fn calendar_today(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page` is never used
[INFO] [stdout]    --> src/tasks.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub async fn calendar_page(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:864:10
[INFO] [stdout]     |
[INFO] [stdout] 864 | async fn calendar_page_inner(pool: &DbPool, year: i32, month: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_card` is never used
[INFO] [stdout]     --> src/tasks.rs:1099:4
[INFO] [stdout]      |
[INFO] [stdout] 1099 | fn render_task_card(task: &DemoTask, status: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_show_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1163:4
[INFO] [stdout]      |
[INFO] [stdout] 1163 | fn render_task_show_page(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_calendar` is never used
[INFO] [stdout]     --> src/tasks.rs:1363:4
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn render_calendar(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_due_on_date` is never used
[INFO] [stdout]     --> src/tasks.rs:1504:4
[INFO] [stdout]      |
[INFO] [stdout] 1504 | fn is_due_on_date(task: &DemoTask, date: chrono::NaiveDate) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_due_time` is never used
[INFO] [stdout]     --> src/tasks.rs:1555:4
[INFO] [stdout]      |
[INFO] [stdout] 1555 | fn get_due_time(task: &DemoTask, _date: chrono::NaiveDate) -> chrono::NaiveTime {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_next_due_after` is never used
[INFO] [stdout]     --> src/tasks.rs:1569:4
[INFO] [stdout]      |
[INFO] [stdout] 1569 | fn find_next_due_after(task: &DemoTask, after: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_completions_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1588:4
[INFO] [stdout]      |
[INFO] [stdout] 1588 | fn render_completions_list(task_id: &str, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListQuery` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1627:12
[INFO] [stdout]      |
[INFO] [stdout] 1627 | pub struct ListQuery {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_sort` is never used
[INFO] [stdout]     --> src/tasks.rs:1636:4
[INFO] [stdout]      |
[INFO] [stdout] 1636 | fn default_sort() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1640:4
[INFO] [stdout]      |
[INFO] [stdout] 1640 | fn default_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_per_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1644:4
[INFO] [stdout]      |
[INFO] [stdout] 1644 | fn default_per_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_index` is never used
[INFO] [stdout]     --> src/tasks.rs:1649:10
[INFO] [stdout]      |
[INFO] [stdout] 1649 | async fn tasks_index(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1704:10
[INFO] [stdout]      |
[INFO] [stdout] 1704 | async fn tasks_list(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit` is never used
[INFO] [stdout]     --> src/tasks.rs:1709:10
[INFO] [stdout]      |
[INFO] [stdout] 1709 | async fn task_edit(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:1731:10
[INFO] [stdout]      |
[INFO] [stdout] 1731 | async fn task_edit_modal(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]     --> src/tasks.rs:1755:9
[INFO] [stdout]      |
[INFO] [stdout] 1754 | pub struct TaskForm {
[INFO] [stdout]      |            -------- fields in this struct
[INFO] [stdout] 1755 |     pub name: String,
[INFO] [stdout]      |         ^^^^
[INFO] [stdout] 1756 |     pub details: String,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1759 |     pub n_days_count: Option<i32>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1760 |     #[serde(default)]
[INFO] [stdout] 1761 |     pub n_days_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1762 |     #[serde(default)]
[INFO] [stdout] 1763 |     pub n_weeks_count: Option<i32>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1764 |     #[serde(default)]
[INFO] [stdout] 1765 |     pub n_weeks_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1766 |     #[serde(default)]
[INFO] [stdout] 1767 |     pub dow_sun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1768 |     #[serde(default)]
[INFO] [stdout] 1769 |     pub dow_mon: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1770 |     #[serde(default)]
[INFO] [stdout] 1771 |     pub dow_tue: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1772 |     #[serde(default)]
[INFO] [stdout] 1773 |     pub dow_wed: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1774 |     #[serde(default)]
[INFO] [stdout] 1775 |     pub dow_thu: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1776 |     #[serde(default)]
[INFO] [stdout] 1777 |     pub dow_fri: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1778 |     #[serde(default)]
[INFO] [stdout] 1779 |     pub dow_sat: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1783 |     pub monthwise_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout] 1784 |     #[serde(default)]
[INFO] [stdout] 1785 |     pub wom_week_1: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1786 |     #[serde(default)]
[INFO] [stdout] 1787 |     pub wom_week_2: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1788 |     #[serde(default)]
[INFO] [stdout] 1789 |     pub wom_week_3: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1790 |     #[serde(default)]
[INFO] [stdout] 1791 |     pub wom_week_4: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1792 |     #[serde(default)]
[INFO] [stdout] 1793 |     pub wom_week_5: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1794 |     #[serde(default)]
[INFO] [stdout] 1795 |     pub wom_dow_sun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1796 |     #[serde(default)]
[INFO] [stdout] 1797 |     pub wom_dow_mon: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1798 |     #[serde(default)]
[INFO] [stdout] 1799 |     pub wom_dow_tue: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1800 |     #[serde(default)]
[INFO] [stdout] 1801 |     pub wom_dow_wed: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1802 |     #[serde(default)]
[INFO] [stdout] 1803 |     pub wom_dow_thu: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1804 |     #[serde(default)]
[INFO] [stdout] 1805 |     pub wom_dow_fri: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1806 |     #[serde(default)]
[INFO] [stdout] 1807 |     pub wom_dow_sat: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1808 |     #[serde(default)]
[INFO] [stdout] 1809 |     pub wom_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1810 |     #[serde(default)]
[INFO] [stdout] 1811 |     pub cm_month_jan: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1812 |     #[serde(default)]
[INFO] [stdout] 1813 |     pub cm_month_feb: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1814 |     #[serde(default)]
[INFO] [stdout] 1815 |     pub cm_month_mar: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1816 |     #[serde(default)]
[INFO] [stdout] 1817 |     pub cm_month_apr: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1818 |     #[serde(default)]
[INFO] [stdout] 1819 |     pub cm_month_may: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1820 |     #[serde(default)]
[INFO] [stdout] 1821 |     pub cm_month_jun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1822 |     #[serde(default)]
[INFO] [stdout] 1823 |     pub cm_month_jul: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1824 |     #[serde(default)]
[INFO] [stdout] 1825 |     pub cm_month_aug: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1826 |     #[serde(default)]
[INFO] [stdout] 1827 |     pub cm_month_sep: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1828 |     #[serde(default)]
[INFO] [stdout] 1829 |     pub cm_month_oct: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1830 |     #[serde(default)]
[INFO] [stdout] 1831 |     pub cm_month_nov: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1832 |     #[serde(default)]
[INFO] [stdout] 1833 |     pub cm_month_dec: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1837 |     pub cm_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1838 |     #[serde(default)]
[INFO] [stdout] 1839 |     pub once_now: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1840 |     #[serde(default)]
[INFO] [stdout] 1841 |     pub once_date: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1842 |     #[serde(default)]
[INFO] [stdout] 1843 |     pub once_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1844 |     #[serde(default)]
[INFO] [stdout] 1845 |     pub alerting_time: Option<i64>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1846 |     #[serde(default)]
[INFO] [stdout] 1847 |     pub completeable: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `TaskForm` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_demo_task` is never used
[INFO] [stdout]     --> src/tasks.rs:1851:12
[INFO] [stdout]      |
[INFO] [stdout] 1850 | impl TaskForm {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] 1851 |     pub fn to_demo_task(&self, id: &str, base_task: &DemoTask) -> DemoTask {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2055:10
[INFO] [stdout]      |
[INFO] [stdout] 2055 | async fn save_task(
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2109:10
[INFO] [stdout]      |
[INFO] [stdout] 2109 | async fn change_schedule_type(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2138:10
[INFO] [stdout]      |
[INFO] [stdout] 2138 | async fn new_task_modal() -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2144:10
[INFO] [stdout]      |
[INFO] [stdout] 2144 | async fn create_task(State(pool): State<DbPool>, Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2172:10
[INFO] [stdout]      |
[INFO] [stdout] 2172 | async fn new_task_schedule_type(Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2178:4
[INFO] [stdout]      |
[INFO] [stdout] 2178 | fn create_default_task() -> DemoTask {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoTask` is never constructed
[INFO] [stdout]     --> src/tasks.rs:2198:12
[INFO] [stdout]      |
[INFO] [stdout] 2198 | pub struct DemoTask {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tasks.rs:2218:12
[INFO] [stdout]      |
[INFO] [stdout] 2215 | impl DemoTask {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2218 |     pub fn next_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2252 |     fn is_distant_future(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2260 |     pub fn is_once_completed(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2265 |     pub fn time_as_readable_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2305 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2314 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2327 |     pub fn is_inactive(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2350 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_certain_months` is never used
[INFO] [stdout]     --> src/tasks.rs:2424:8
[INFO] [stdout]      |
[INFO] [stdout] 2424 | pub fn default_certain_months() -> CertainMonths {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_once` is never used
[INFO] [stdout]     --> src/tasks.rs:2432:8
[INFO] [stdout]      |
[INFO] [stdout] 2432 | pub fn default_once() -> Once {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_sort_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2442:4
[INFO] [stdout]      |
[INFO] [stdout] 2442 | fn render_sort_select(current_sort: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_per_page_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2454:4
[INFO] [stdout]      |
[INFO] [stdout] 2454 | fn render_per_page_select(current_per_page: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list` is never used
[INFO] [stdout]     --> src/tasks.rs:2471:10
[INFO] [stdout]      |
[INFO] [stdout] 2471 | async fn render_task_list(pool: &DbPool, sort: &str, page: i64, per_page: i64) -> String {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pagination` is never used
[INFO] [stdout]     --> src/tasks.rs:2517:4
[INFO] [stdout]      |
[INFO] [stdout] 2517 | fn render_pagination(current_page: i64, total_pages: i64, per_page: i64, sort: &str, total_count: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list_item` is never used
[INFO] [stdout]     --> src/tasks.rs:2627:4
[INFO] [stdout]      |
[INFO] [stdout] 2627 | fn render_task_list_item(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]     --> src/tasks.rs:2661:4
[INFO] [stdout]      |
[INFO] [stdout] 2661 | fn html_escape(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2668:4
[INFO] [stdout]      |
[INFO] [stdout] 2668 | fn render_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2680:4
[INFO] [stdout]      |
[INFO] [stdout] 2680 | fn render_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2692:4
[INFO] [stdout]      |
[INFO] [stdout] 2692 | fn render_new_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2704:4
[INFO] [stdout]      |
[INFO] [stdout] 2704 | fn render_new_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2716:8
[INFO] [stdout]      |
[INFO] [stdout] 2716 | pub fn render_task_editor(task: &DemoTask) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor_inner` is never used
[INFO] [stdout]     --> src/tasks.rs:2720:4
[INFO] [stdout]      |
[INFO] [stdout] 2720 | fn render_task_editor_inner(task: &DemoTask, is_modal: bool, is_new: bool, form: Option<&TaskForm>, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_schedule_type_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2899:4
[INFO] [stdout]      |
[INFO] [stdout] 2899 | fn render_schedule_type_select(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_alerting_time_input` is never used
[INFO] [stdout]     --> src/tasks.rs:2929:4
[INFO] [stdout]      |
[INFO] [stdout] 2929 | fn render_alerting_time_input(task_id: &str, alerting_time: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_alerting_time` is never used
[INFO] [stdout]     --> src/tasks.rs:2981:4
[INFO] [stdout]      |
[INFO] [stdout] 2981 | fn format_alerting_time(minutes: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_days_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2998:4
[INFO] [stdout]      |
[INFO] [stdout] 2998 | fn render_n_days_editor(task_id: &str, n_days: &NDays) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_weeks_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3031:4
[INFO] [stdout]      |
[INFO] [stdout] 3031 | fn render_n_weeks_editor(task_id: &str, n_weeks: &NWeeks) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_monthwise_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3133:4
[INFO] [stdout]      |
[INFO] [stdout] 3133 | fn render_monthwise_editor(task_id: &str, monthwise: &Monthwise, raw_days: Option<&str>, error: &Option<String>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_weeks_of_month_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3180:4
[INFO] [stdout]      |
[INFO] [stdout] 3180 | fn render_weeks_of_month_editor(task_id: &str, weeks_of_month: &WeeksOfMonth) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_certain_months_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3298:4
[INFO] [stdout]      |
[INFO] [stdout] 3298 | fn render_certain_months_editor(task_id: &str, certain_months: &CertainMonths, raw_days: Option<&str>, error: &Option<String>) -> ...
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_once_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3378:4
[INFO] [stdout]      |
[INFO] [stdout] 3378 | fn render_once_editor(task_id: &str, once: &Once) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `APP_TIMEZONE` is never used
[INFO] [stdout]  --> src/config.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | static APP_TIMEZONE: OnceLock<Tz> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOUCH_MODE` is never used
[INFO] [stdout]  --> src/config.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static TOUCH_MODE: OnceLock<bool> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_timezone` is never used
[INFO] [stdout]   --> src/config.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn init_timezone(tz_str: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_timezone` is never used
[INFO] [stdout]   --> src/config.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_timezone() -> Tz {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn init_touch_mode(enabled: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_touch_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_completion` is never used
[INFO] [stdout]   --> src/db.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn add_completion(pool: &DbPool, task_id: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_latest_completion` is never used
[INFO] [stdout]    --> src/db.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub async fn get_latest_completion(pool: &DbPool, task_id: &str) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionRecord` is never constructed
[INFO] [stdout]    --> src/db.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct CompletionRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_completions` is never used
[INFO] [stdout]    --> src/db.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn get_all_completions(pool: &DbPool, task_id: &str) -> Result<Vec<CompletionRecord>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/db.rs:145:14
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub async fn delete_completion(pool: &DbPool, completion_id: i64) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbSchedule` is never constructed
[INFO] [stdout]    --> src/db.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbTask` is never constructed
[INFO] [stdout]    --> src/db.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct DbTask {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_time` is never used
[INFO] [stdout]    --> src/db.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn parse_time(s: &Option<String>) -> NaiveTime {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int_list` is never used
[INFO] [stdout]    --> src/db.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_int_list(s: &Option<String>) -> Vec<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_schedule_parts` is never used
[INFO] [stdout]    --> src/db.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl DbSchedule {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 229 |     pub fn to_schedule_parts(&self) -> (ScheduleKind, NDays, NWeeks, Monthwise, WeeksOfMonth, CertainMonths, Once) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task` is never used
[INFO] [stdout]    --> src/db.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub async fn get_task(pool: &DbPool, task_id: i64) -> Result<Option<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_tasks` is never used
[INFO] [stdout]    --> src/db.rs:339:14
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub async fn get_all_tasks(pool: &DbPool) -> Result<Vec<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task_count` is never used
[INFO] [stdout]    --> src/db.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub async fn get_task_count(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tasks_paginated` is never used
[INFO] [stdout]    --> src/db.rs:392:14
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub async fn get_tasks_paginated(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]    --> src/db.rs:451:14
[INFO] [stdout]     |
[INFO] [stdout] 451 | pub async fn save_task(pool: &DbPool, task: &DemoTask) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_task_deleted_at` is never used
[INFO] [stdout]    --> src/db.rs:663:14
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub async fn set_task_deleted_at(pool: &DbPool, task_id: i64, deleted_at: Option<DateTime<Utc>>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScheduleKind` is never used
[INFO] [stdout]   --> src/schedule.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ScheduleKind {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Once` is never constructed
[INFO] [stdout]   --> src/schedule.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Once {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NDays` is never constructed
[INFO] [stdout]   --> src/schedule.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NDays {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NDays {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 57 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NWeeks` is never constructed
[INFO] [stdout]   --> src/schedule.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct NWeeks {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl NWeeks {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 88 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Monthwise` is never constructed
[INFO] [stdout]    --> src/schedule.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct Monthwise {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl Monthwise {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 134 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WeeksOfMonth` is never constructed
[INFO] [stdout]    --> src/schedule.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub struct WeeksOfMonth {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CertainMonths` is never constructed
[INFO] [stdout]    --> src/schedule.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct CertainMonths {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:228:19
[INFO] [stdout]     |
[INFO] [stdout] 227 | impl WeeksOfMonth {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 228 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DaysOfWeek` is never constructed
[INFO] [stdout]    --> src/schedule.rs:316:12
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct DaysOfWeek {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `active` is never used
[INFO] [stdout]    --> src/schedule.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl DaysOfWeek {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 328 |     pub fn active(&self, day: Weekday) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_day_range` is never used
[INFO] [stdout]   --> src/tasks.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn parse_day_range(input: &str) -> Result<Vec<i32>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_day_range` is never used
[INFO] [stdout]   --> src/tasks.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn format_day_range(days: &[i32]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormErrors` is never constructed
[INFO] [stdout]    --> src/tasks.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct FormErrors {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_errors` is never used
[INFO] [stdout]    --> src/tasks.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl FormErrors {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 136 |     pub fn has_errors(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DemoTasksMap` is never used
[INFO] [stdout]    --> src/tasks.rs:142:10
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub type DemoTasksMap = Arc<Mutex<HashMap<String, DemoTask>>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEMO_TASKS` is never used
[INFO] [stdout]    --> src/tasks.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub static DEMO_TASKS: OnceLock<DemoTasksMap> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_demo_tasks` is never used
[INFO] [stdout]    --> src/tasks.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn get_demo_tasks() -> &'static DemoTasksMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_demo_id` is never used
[INFO] [stdout]    --> src/tasks.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_demo_id(id: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `router` is never used
[INFO] [stdout]    --> src/tasks.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn router() -> Router<DbPool> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn complete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:297:10
[INFO] [stdout]     |
[INFO] [stdout] 297 | async fn delete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_task` is never used
[INFO] [stdout]    --> src/tasks.rs:309:10
[INFO] [stdout]     |
[INFO] [stdout] 309 | async fn restore_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_show` is never used
[INFO] [stdout]    --> src/tasks.rs:321:10
[INFO] [stdout]     |
[INFO] [stdout] 321 | async fn task_show(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/tasks.rs:348:10
[INFO] [stdout]     |
[INFO] [stdout] 348 | async fn delete_completion(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homepage` is never used
[INFO] [stdout]    --> src/tasks.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn homepage(State(pool): State<DbPool>) -> Html<String> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub struct DailyQuery {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_today` is never used
[INFO] [stdout]    --> src/tasks.rs:556:14
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub async fn daily_today(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page` is never used
[INFO] [stdout]    --> src/tasks.rs:572:14
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub async fn daily_page(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:579:10
[INFO] [stdout]     |
[INFO] [stdout] 579 | async fn daily_page_inner(pool: &DbPool, year: i32, month: u32, day: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `days_in_month` is never used
[INFO] [stdout]    --> src/tasks.rs:818:4
[INFO] [stdout]     |
[INFO] [stdout] 818 | fn days_in_month(year: i32, month: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CalendarQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:836:12
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub struct CalendarQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_today` is never used
[INFO] [stdout]    --> src/tasks.rs:842:14
[INFO] [stdout]     |
[INFO] [stdout] 842 | pub async fn calendar_today(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page` is never used
[INFO] [stdout]    --> src/tasks.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub async fn calendar_page(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:864:10
[INFO] [stdout]     |
[INFO] [stdout] 864 | async fn calendar_page_inner(pool: &DbPool, year: i32, month: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_card` is never used
[INFO] [stdout]     --> src/tasks.rs:1099:4
[INFO] [stdout]      |
[INFO] [stdout] 1099 | fn render_task_card(task: &DemoTask, status: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_show_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1163:4
[INFO] [stdout]      |
[INFO] [stdout] 1163 | fn render_task_show_page(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_calendar` is never used
[INFO] [stdout]     --> src/tasks.rs:1363:4
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn render_calendar(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_due_on_date` is never used
[INFO] [stdout]     --> src/tasks.rs:1504:4
[INFO] [stdout]      |
[INFO] [stdout] 1504 | fn is_due_on_date(task: &DemoTask, date: chrono::NaiveDate) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_due_time` is never used
[INFO] [stdout]     --> src/tasks.rs:1555:4
[INFO] [stdout]      |
[INFO] [stdout] 1555 | fn get_due_time(task: &DemoTask, _date: chrono::NaiveDate) -> chrono::NaiveTime {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_next_due_after` is never used
[INFO] [stdout]     --> src/tasks.rs:1569:4
[INFO] [stdout]      |
[INFO] [stdout] 1569 | fn find_next_due_after(task: &DemoTask, after: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_completions_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1588:4
[INFO] [stdout]      |
[INFO] [stdout] 1588 | fn render_completions_list(task_id: &str, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListQuery` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1627:12
[INFO] [stdout]      |
[INFO] [stdout] 1627 | pub struct ListQuery {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_sort` is never used
[INFO] [stdout]     --> src/tasks.rs:1636:4
[INFO] [stdout]      |
[INFO] [stdout] 1636 | fn default_sort() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1640:4
[INFO] [stdout]      |
[INFO] [stdout] 1640 | fn default_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_per_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1644:4
[INFO] [stdout]      |
[INFO] [stdout] 1644 | fn default_per_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_index` is never used
[INFO] [stdout]     --> src/tasks.rs:1649:10
[INFO] [stdout]      |
[INFO] [stdout] 1649 | async fn tasks_index(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1704:10
[INFO] [stdout]      |
[INFO] [stdout] 1704 | async fn tasks_list(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit` is never used
[INFO] [stdout]     --> src/tasks.rs:1709:10
[INFO] [stdout]      |
[INFO] [stdout] 1709 | async fn task_edit(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:1731:10
[INFO] [stdout]      |
[INFO] [stdout] 1731 | async fn task_edit_modal(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskForm` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1754:12
[INFO] [stdout]      |
[INFO] [stdout] 1754 | pub struct TaskForm {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_demo_task` and `validate` are never used
[INFO] [stdout]     --> src/tasks.rs:1851:12
[INFO] [stdout]      |
[INFO] [stdout] 1850 | impl TaskForm {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] 1851 |     pub fn to_demo_task(&self, id: &str, base_task: &DemoTask) -> DemoTask {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2025 |     pub fn validate(&self) -> FormErrors {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2055:10
[INFO] [stdout]      |
[INFO] [stdout] 2055 | async fn save_task(
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2109:10
[INFO] [stdout]      |
[INFO] [stdout] 2109 | async fn change_schedule_type(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2138:10
[INFO] [stdout]      |
[INFO] [stdout] 2138 | async fn new_task_modal() -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2144:10
[INFO] [stdout]      |
[INFO] [stdout] 2144 | async fn create_task(State(pool): State<DbPool>, Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2172:10
[INFO] [stdout]      |
[INFO] [stdout] 2172 | async fn new_task_schedule_type(Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2178:4
[INFO] [stdout]      |
[INFO] [stdout] 2178 | fn create_default_task() -> DemoTask {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoTask` is never constructed
[INFO] [stdout]     --> src/tasks.rs:2198:12
[INFO] [stdout]      |
[INFO] [stdout] 2198 | pub struct DemoTask {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tasks.rs:2218:12
[INFO] [stdout]      |
[INFO] [stdout] 2215 | impl DemoTask {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2218 |     pub fn next_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2252 |     fn is_distant_future(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2260 |     pub fn is_once_completed(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2265 |     pub fn time_as_readable_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2305 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2314 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2327 |     pub fn is_inactive(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2350 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_n_days` is never used
[INFO] [stdout]     --> src/tasks.rs:2378:8
[INFO] [stdout]      |
[INFO] [stdout] 2378 | pub fn default_n_days() -> NDays {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_n_weeks` is never used
[INFO] [stdout]     --> src/tasks.rs:2385:8
[INFO] [stdout]      |
[INFO] [stdout] 2385 | pub fn default_n_weeks() -> NWeeks {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_monthwise` is never used
[INFO] [stdout]     --> src/tasks.rs:2401:8
[INFO] [stdout]      |
[INFO] [stdout] 2401 | pub fn default_monthwise() -> Monthwise {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_weeks_of_month` is never used
[INFO] [stdout]     --> src/tasks.rs:2408:8
[INFO] [stdout]      |
[INFO] [stdout] 2408 | pub fn default_weeks_of_month() -> WeeksOfMonth {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_certain_months` is never used
[INFO] [stdout]     --> src/tasks.rs:2424:8
[INFO] [stdout]      |
[INFO] [stdout] 2424 | pub fn default_certain_months() -> CertainMonths {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_once` is never used
[INFO] [stdout]     --> src/tasks.rs:2432:8
[INFO] [stdout]      |
[INFO] [stdout] 2432 | pub fn default_once() -> Once {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_sort_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2442:4
[INFO] [stdout]      |
[INFO] [stdout] 2442 | fn render_sort_select(current_sort: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_per_page_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2454:4
[INFO] [stdout]      |
[INFO] [stdout] 2454 | fn render_per_page_select(current_per_page: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list` is never used
[INFO] [stdout]     --> src/tasks.rs:2471:10
[INFO] [stdout]      |
[INFO] [stdout] 2471 | async fn render_task_list(pool: &DbPool, sort: &str, page: i64, per_page: i64) -> String {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pagination` is never used
[INFO] [stdout]     --> src/tasks.rs:2517:4
[INFO] [stdout]      |
[INFO] [stdout] 2517 | fn render_pagination(current_page: i64, total_pages: i64, per_page: i64, sort: &str, total_count: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list_item` is never used
[INFO] [stdout]     --> src/tasks.rs:2627:4
[INFO] [stdout]      |
[INFO] [stdout] 2627 | fn render_task_list_item(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]     --> src/tasks.rs:2661:4
[INFO] [stdout]      |
[INFO] [stdout] 2661 | fn html_escape(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2668:4
[INFO] [stdout]      |
[INFO] [stdout] 2668 | fn render_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2680:4
[INFO] [stdout]      |
[INFO] [stdout] 2680 | fn render_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2692:4
[INFO] [stdout]      |
[INFO] [stdout] 2692 | fn render_new_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2704:4
[INFO] [stdout]      |
[INFO] [stdout] 2704 | fn render_new_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2716:8
[INFO] [stdout]      |
[INFO] [stdout] 2716 | pub fn render_task_editor(task: &DemoTask) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor_inner` is never used
[INFO] [stdout]     --> src/tasks.rs:2720:4
[INFO] [stdout]      |
[INFO] [stdout] 2720 | fn render_task_editor_inner(task: &DemoTask, is_modal: bool, is_new: bool, form: Option<&TaskForm>, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_schedule_type_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2899:4
[INFO] [stdout]      |
[INFO] [stdout] 2899 | fn render_schedule_type_select(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_alerting_time_input` is never used
[INFO] [stdout]     --> src/tasks.rs:2929:4
[INFO] [stdout]      |
[INFO] [stdout] 2929 | fn render_alerting_time_input(task_id: &str, alerting_time: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_alerting_time` is never used
[INFO] [stdout]     --> src/tasks.rs:2981:4
[INFO] [stdout]      |
[INFO] [stdout] 2981 | fn format_alerting_time(minutes: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_days_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2998:4
[INFO] [stdout]      |
[INFO] [stdout] 2998 | fn render_n_days_editor(task_id: &str, n_days: &NDays) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_weeks_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3031:4
[INFO] [stdout]      |
[INFO] [stdout] 3031 | fn render_n_weeks_editor(task_id: &str, n_weeks: &NWeeks) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_monthwise_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3133:4
[INFO] [stdout]      |
[INFO] [stdout] 3133 | fn render_monthwise_editor(task_id: &str, monthwise: &Monthwise, raw_days: Option<&str>, error: &Option<String>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_weeks_of_month_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3180:4
[INFO] [stdout]      |
[INFO] [stdout] 3180 | fn render_weeks_of_month_editor(task_id: &str, weeks_of_month: &WeeksOfMonth) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_certain_months_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3298:4
[INFO] [stdout]      |
[INFO] [stdout] 3298 | fn render_certain_months_editor(task_id: &str, certain_months: &CertainMonths, raw_days: Option<&str>, error: &Option<String>) -> ...
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_once_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3378:4
[INFO] [stdout]      |
[INFO] [stdout] 3378 | fn render_once_editor(task_id: &str, once: &Once) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_timezone` is never used
[INFO] [stdout]   --> src/config.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_timezone() -> Tz {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_touch_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_completion` is never used
[INFO] [stdout]   --> src/db.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn add_completion(pool: &DbPool, task_id: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_latest_completion` is never used
[INFO] [stdout]    --> src/db.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub async fn get_latest_completion(pool: &DbPool, task_id: &str) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionRecord` is never constructed
[INFO] [stdout]    --> src/db.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct CompletionRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_completions` is never used
[INFO] [stdout]    --> src/db.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn get_all_completions(pool: &DbPool, task_id: &str) -> Result<Vec<CompletionRecord>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/db.rs:145:14
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub async fn delete_completion(pool: &DbPool, completion_id: i64) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbSchedule` is never constructed
[INFO] [stdout]    --> src/db.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/db.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct DbTask {
[INFO] [stdout]     |            ------ fields in this struct
[INFO] [stdout] 193 |     pub id: i64,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 194 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 195 |     pub details: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 196 |     pub schedule_id: i64,
[INFO] [stdout] 197 |     pub alerting_time: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 198 |     pub completeable: Option<i32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 199 |     pub created_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 200 |     pub deleted_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DbTask` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_time` is never used
[INFO] [stdout]    --> src/db.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn parse_time(s: &Option<String>) -> NaiveTime {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int_list` is never used
[INFO] [stdout]    --> src/db.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_int_list(s: &Option<String>) -> Vec<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_schedule_parts` is never used
[INFO] [stdout]    --> src/db.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl DbSchedule {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 229 |     pub fn to_schedule_parts(&self) -> (ScheduleKind, NDays, NWeeks, Monthwise, WeeksOfMonth, CertainMonths, Once) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task` is never used
[INFO] [stdout]    --> src/db.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub async fn get_task(pool: &DbPool, task_id: i64) -> Result<Option<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_tasks` is never used
[INFO] [stdout]    --> src/db.rs:339:14
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub async fn get_all_tasks(pool: &DbPool) -> Result<Vec<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task_count` is never used
[INFO] [stdout]    --> src/db.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub async fn get_task_count(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tasks_paginated` is never used
[INFO] [stdout]    --> src/db.rs:392:14
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub async fn get_tasks_paginated(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_task_deleted_at` is never used
[INFO] [stdout]    --> src/db.rs:663:14
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub async fn set_task_deleted_at(pool: &DbPool, task_id: i64, deleted_at: Option<DateTime<Utc>>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Once` is never constructed
[INFO] [stdout]   --> src/schedule.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ScheduleKind {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     Once,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScheduleKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NDays {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 57 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl NWeeks {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 88 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl Monthwise {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 134 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:228:19
[INFO] [stdout]     |
[INFO] [stdout] 227 | impl WeeksOfMonth {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 228 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `active` is never used
[INFO] [stdout]    --> src/schedule.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl DaysOfWeek {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 328 |     pub fn active(&self, day: Weekday) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_day_range` is never used
[INFO] [stdout]   --> src/tasks.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn parse_day_range(input: &str) -> Result<Vec<i32>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_day_range` is never used
[INFO] [stdout]   --> src/tasks.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn format_day_range(days: &[i32]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormErrors` is never constructed
[INFO] [stdout]    --> src/tasks.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct FormErrors {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_errors` is never used
[INFO] [stdout]    --> src/tasks.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl FormErrors {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 136 |     pub fn has_errors(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DemoTasksMap` is never used
[INFO] [stdout]    --> src/tasks.rs:142:10
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub type DemoTasksMap = Arc<Mutex<HashMap<String, DemoTask>>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEMO_TASKS` is never used
[INFO] [stdout]    --> src/tasks.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub static DEMO_TASKS: OnceLock<DemoTasksMap> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_demo_tasks` is never used
[INFO] [stdout]    --> src/tasks.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn get_demo_tasks() -> &'static DemoTasksMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_demo_id` is never used
[INFO] [stdout]    --> src/tasks.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_demo_id(id: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `router` is never used
[INFO] [stdout]    --> src/tasks.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn router() -> Router<DbPool> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn complete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:297:10
[INFO] [stdout]     |
[INFO] [stdout] 297 | async fn delete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_task` is never used
[INFO] [stdout]    --> src/tasks.rs:309:10
[INFO] [stdout]     |
[INFO] [stdout] 309 | async fn restore_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_show` is never used
[INFO] [stdout]    --> src/tasks.rs:321:10
[INFO] [stdout]     |
[INFO] [stdout] 321 | async fn task_show(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/tasks.rs:348:10
[INFO] [stdout]     |
[INFO] [stdout] 348 | async fn delete_completion(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homepage` is never used
[INFO] [stdout]    --> src/tasks.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn homepage(State(pool): State<DbPool>) -> Html<String> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub struct DailyQuery {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_today` is never used
[INFO] [stdout]    --> src/tasks.rs:556:14
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub async fn daily_today(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page` is never used
[INFO] [stdout]    --> src/tasks.rs:572:14
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub async fn daily_page(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:579:10
[INFO] [stdout]     |
[INFO] [stdout] 579 | async fn daily_page_inner(pool: &DbPool, year: i32, month: u32, day: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `days_in_month` is never used
[INFO] [stdout]    --> src/tasks.rs:818:4
[INFO] [stdout]     |
[INFO] [stdout] 818 | fn days_in_month(year: i32, month: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CalendarQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:836:12
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub struct CalendarQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_today` is never used
[INFO] [stdout]    --> src/tasks.rs:842:14
[INFO] [stdout]     |
[INFO] [stdout] 842 | pub async fn calendar_today(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page` is never used
[INFO] [stdout]    --> src/tasks.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub async fn calendar_page(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:864:10
[INFO] [stdout]     |
[INFO] [stdout] 864 | async fn calendar_page_inner(pool: &DbPool, year: i32, month: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_card` is never used
[INFO] [stdout]     --> src/tasks.rs:1099:4
[INFO] [stdout]      |
[INFO] [stdout] 1099 | fn render_task_card(task: &DemoTask, status: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_show_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1163:4
[INFO] [stdout]      |
[INFO] [stdout] 1163 | fn render_task_show_page(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_calendar` is never used
[INFO] [stdout]     --> src/tasks.rs:1363:4
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn render_calendar(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_due_on_date` is never used
[INFO] [stdout]     --> src/tasks.rs:1504:4
[INFO] [stdout]      |
[INFO] [stdout] 1504 | fn is_due_on_date(task: &DemoTask, date: chrono::NaiveDate) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_due_time` is never used
[INFO] [stdout]     --> src/tasks.rs:1555:4
[INFO] [stdout]      |
[INFO] [stdout] 1555 | fn get_due_time(task: &DemoTask, _date: chrono::NaiveDate) -> chrono::NaiveTime {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_next_due_after` is never used
[INFO] [stdout]     --> src/tasks.rs:1569:4
[INFO] [stdout]      |
[INFO] [stdout] 1569 | fn find_next_due_after(task: &DemoTask, after: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_completions_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1588:4
[INFO] [stdout]      |
[INFO] [stdout] 1588 | fn render_completions_list(task_id: &str, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListQuery` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1627:12
[INFO] [stdout]      |
[INFO] [stdout] 1627 | pub struct ListQuery {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_sort` is never used
[INFO] [stdout]     --> src/tasks.rs:1636:4
[INFO] [stdout]      |
[INFO] [stdout] 1636 | fn default_sort() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1640:4
[INFO] [stdout]      |
[INFO] [stdout] 1640 | fn default_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_per_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1644:4
[INFO] [stdout]      |
[INFO] [stdout] 1644 | fn default_per_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_index` is never used
[INFO] [stdout]     --> src/tasks.rs:1649:10
[INFO] [stdout]      |
[INFO] [stdout] 1649 | async fn tasks_index(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1704:10
[INFO] [stdout]      |
[INFO] [stdout] 1704 | async fn tasks_list(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit` is never used
[INFO] [stdout]     --> src/tasks.rs:1709:10
[INFO] [stdout]      |
[INFO] [stdout] 1709 | async fn task_edit(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:1731:10
[INFO] [stdout]      |
[INFO] [stdout] 1731 | async fn task_edit_modal(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskForm` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1754:12
[INFO] [stdout]      |
[INFO] [stdout] 1754 | pub struct TaskForm {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_demo_task` and `validate` are never used
[INFO] [stdout]     --> src/tasks.rs:1851:12
[INFO] [stdout]      |
[INFO] [stdout] 1850 | impl TaskForm {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] 1851 |     pub fn to_demo_task(&self, id: &str, base_task: &DemoTask) -> DemoTask {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2025 |     pub fn validate(&self) -> FormErrors {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2055:10
[INFO] [stdout]      |
[INFO] [stdout] 2055 | async fn save_task(
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2109:10
[INFO] [stdout]      |
[INFO] [stdout] 2109 | async fn change_schedule_type(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2138:10
[INFO] [stdout]      |
[INFO] [stdout] 2138 | async fn new_task_modal() -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2144:10
[INFO] [stdout]      |
[INFO] [stdout] 2144 | async fn create_task(State(pool): State<DbPool>, Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2172:10
[INFO] [stdout]      |
[INFO] [stdout] 2172 | async fn new_task_schedule_type(Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2178:4
[INFO] [stdout]      |
[INFO] [stdout] 2178 | fn create_default_task() -> DemoTask {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tasks.rs:2218:12
[INFO] [stdout]      |
[INFO] [stdout] 2215 | impl DemoTask {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2218 |     pub fn next_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2252 |     fn is_distant_future(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2260 |     pub fn is_once_completed(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2265 |     pub fn time_as_readable_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2305 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2314 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2327 |     pub fn is_inactive(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2350 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_n_days` is never used
[INFO] [stdout]     --> src/tasks.rs:2378:8
[INFO] [stdout]      |
[INFO] [stdout] 2378 | pub fn default_n_days() -> NDays {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_n_weeks` is never used
[INFO] [stdout]     --> src/tasks.rs:2385:8
[INFO] [stdout]      |
[INFO] [stdout] 2385 | pub fn default_n_weeks() -> NWeeks {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_monthwise` is never used
[INFO] [stdout]     --> src/tasks.rs:2401:8
[INFO] [stdout]      |
[INFO] [stdout] 2401 | pub fn default_monthwise() -> Monthwise {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_weeks_of_month` is never used
[INFO] [stdout]     --> src/tasks.rs:2408:8
[INFO] [stdout]      |
[INFO] [stdout] 2408 | pub fn default_weeks_of_month() -> WeeksOfMonth {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_certain_months` is never used
[INFO] [stdout]     --> src/tasks.rs:2424:8
[INFO] [stdout]      |
[INFO] [stdout] 2424 | pub fn default_certain_months() -> CertainMonths {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_once` is never used
[INFO] [stdout]     --> src/tasks.rs:2432:8
[INFO] [stdout]      |
[INFO] [stdout] 2432 | pub fn default_once() -> Once {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_sort_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2442:4
[INFO] [stdout]      |
[INFO] [stdout] 2442 | fn render_sort_select(current_sort: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_per_page_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2454:4
[INFO] [stdout]      |
[INFO] [stdout] 2454 | fn render_per_page_select(current_per_page: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list` is never used
[INFO] [stdout]     --> src/tasks.rs:2471:10
[INFO] [stdout]      |
[INFO] [stdout] 2471 | async fn render_task_list(pool: &DbPool, sort: &str, page: i64, per_page: i64) -> String {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pagination` is never used
[INFO] [stdout]     --> src/tasks.rs:2517:4
[INFO] [stdout]      |
[INFO] [stdout] 2517 | fn render_pagination(current_page: i64, total_pages: i64, per_page: i64, sort: &str, total_count: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list_item` is never used
[INFO] [stdout]     --> src/tasks.rs:2627:4
[INFO] [stdout]      |
[INFO] [stdout] 2627 | fn render_task_list_item(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]     --> src/tasks.rs:2661:4
[INFO] [stdout]      |
[INFO] [stdout] 2661 | fn html_escape(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2668:4
[INFO] [stdout]      |
[INFO] [stdout] 2668 | fn render_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2680:4
[INFO] [stdout]      |
[INFO] [stdout] 2680 | fn render_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2692:4
[INFO] [stdout]      |
[INFO] [stdout] 2692 | fn render_new_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2704:4
[INFO] [stdout]      |
[INFO] [stdout] 2704 | fn render_new_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2716:8
[INFO] [stdout]      |
[INFO] [stdout] 2716 | pub fn render_task_editor(task: &DemoTask) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor_inner` is never used
[INFO] [stdout]     --> src/tasks.rs:2720:4
[INFO] [stdout]      |
[INFO] [stdout] 2720 | fn render_task_editor_inner(task: &DemoTask, is_modal: bool, is_new: bool, form: Option<&TaskForm>, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_schedule_type_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2899:4
[INFO] [stdout]      |
[INFO] [stdout] 2899 | fn render_schedule_type_select(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_alerting_time_input` is never used
[INFO] [stdout]     --> src/tasks.rs:2929:4
[INFO] [stdout]      |
[INFO] [stdout] 2929 | fn render_alerting_time_input(task_id: &str, alerting_time: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_alerting_time` is never used
[INFO] [stdout]     --> src/tasks.rs:2981:4
[INFO] [stdout]      |
[INFO] [stdout] 2981 | fn format_alerting_time(minutes: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_days_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2998:4
[INFO] [stdout]      |
[INFO] [stdout] 2998 | fn render_n_days_editor(task_id: &str, n_days: &NDays) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_weeks_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3031:4
[INFO] [stdout]      |
[INFO] [stdout] 3031 | fn render_n_weeks_editor(task_id: &str, n_weeks: &NWeeks) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_monthwise_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3133:4
[INFO] [stdout]      |
[INFO] [stdout] 3133 | fn render_monthwise_editor(task_id: &str, monthwise: &Monthwise, raw_days: Option<&str>, error: &Option<String>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_weeks_of_month_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3180:4
[INFO] [stdout]      |
[INFO] [stdout] 3180 | fn render_weeks_of_month_editor(task_id: &str, weeks_of_month: &WeeksOfMonth) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_certain_months_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3298:4
[INFO] [stdout]      |
[INFO] [stdout] 3298 | fn render_certain_months_editor(task_id: &str, certain_months: &CertainMonths, raw_days: Option<&str>, error: &Option<String>) -> ...
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_once_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3378:4
[INFO] [stdout]      |
[INFO] [stdout] 3378 | fn render_once_editor(task_id: &str, once: &Once) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Row`
[INFO] [stdout]  --> src/db.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{sqlite::SqlitePool, FromRow, Row};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `APP_TIMEZONE` is never used
[INFO] [stdout]  --> src/config.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | static APP_TIMEZONE: OnceLock<Tz> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOUCH_MODE` is never used
[INFO] [stdout]  --> src/config.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static TOUCH_MODE: OnceLock<bool> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_timezone` is never used
[INFO] [stdout]   --> src/config.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn init_timezone(tz_str: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_timezone` is never used
[INFO] [stdout]   --> src/config.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_timezone() -> Tz {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn init_touch_mode(enabled: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_touch_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_completion` is never used
[INFO] [stdout]   --> src/db.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn add_completion(pool: &DbPool, task_id: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_latest_completion` is never used
[INFO] [stdout]    --> src/db.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub async fn get_latest_completion(pool: &DbPool, task_id: &str) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionRecord` is never constructed
[INFO] [stdout]    --> src/db.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct CompletionRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_completions` is never used
[INFO] [stdout]    --> src/db.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn get_all_completions(pool: &DbPool, task_id: &str) -> Result<Vec<CompletionRecord>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/db.rs:145:14
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub async fn delete_completion(pool: &DbPool, completion_id: i64) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbSchedule` is never constructed
[INFO] [stdout]    --> src/db.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbTask` is never constructed
[INFO] [stdout]    --> src/db.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct DbTask {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_time` is never used
[INFO] [stdout]    --> src/db.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn parse_time(s: &Option<String>) -> NaiveTime {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int_list` is never used
[INFO] [stdout]    --> src/db.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_int_list(s: &Option<String>) -> Vec<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_schedule_parts` is never used
[INFO] [stdout]    --> src/db.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl DbSchedule {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 229 |     pub fn to_schedule_parts(&self) -> (ScheduleKind, NDays, NWeeks, Monthwise, WeeksOfMonth, CertainMonths, Once) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task` is never used
[INFO] [stdout]    --> src/db.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub async fn get_task(pool: &DbPool, task_id: i64) -> Result<Option<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_tasks` is never used
[INFO] [stdout]    --> src/db.rs:339:14
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub async fn get_all_tasks(pool: &DbPool) -> Result<Vec<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task_count` is never used
[INFO] [stdout]    --> src/db.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub async fn get_task_count(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tasks_paginated` is never used
[INFO] [stdout]    --> src/db.rs:392:14
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub async fn get_tasks_paginated(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]    --> src/db.rs:451:14
[INFO] [stdout]     |
[INFO] [stdout] 451 | pub async fn save_task(pool: &DbPool, task: &DemoTask) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_task_deleted_at` is never used
[INFO] [stdout]    --> src/db.rs:663:14
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub async fn set_task_deleted_at(pool: &DbPool, task_id: i64, deleted_at: Option<DateTime<Utc>>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScheduleKind` is never used
[INFO] [stdout]   --> src/schedule.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ScheduleKind {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Once` is never constructed
[INFO] [stdout]   --> src/schedule.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Once {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NDays` is never constructed
[INFO] [stdout]   --> src/schedule.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NDays {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NDays {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 57 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NWeeks` is never constructed
[INFO] [stdout]   --> src/schedule.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct NWeeks {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl NWeeks {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 88 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Monthwise` is never constructed
[INFO] [stdout]    --> src/schedule.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct Monthwise {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl Monthwise {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 134 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WeeksOfMonth` is never constructed
[INFO] [stdout]    --> src/schedule.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub struct WeeksOfMonth {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CertainMonths` is never constructed
[INFO] [stdout]    --> src/schedule.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct CertainMonths {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:228:19
[INFO] [stdout]     |
[INFO] [stdout] 227 | impl WeeksOfMonth {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 228 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DaysOfWeek` is never constructed
[INFO] [stdout]    --> src/schedule.rs:316:12
[INFO] [stdout]     |
[INFO] [stdout] 316 | pub struct DaysOfWeek {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `active` is never used
[INFO] [stdout]    --> src/schedule.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl DaysOfWeek {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 328 |     pub fn active(&self, day: Weekday) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_day_range` is never used
[INFO] [stdout]   --> src/tasks.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn parse_day_range(input: &str) -> Result<Vec<i32>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_day_range` is never used
[INFO] [stdout]   --> src/tasks.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn format_day_range(days: &[i32]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormErrors` is never constructed
[INFO] [stdout]    --> src/tasks.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct FormErrors {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_errors` is never used
[INFO] [stdout]    --> src/tasks.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl FormErrors {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 136 |     pub fn has_errors(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DemoTasksMap` is never used
[INFO] [stdout]    --> src/tasks.rs:142:10
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub type DemoTasksMap = Arc<Mutex<HashMap<String, DemoTask>>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEMO_TASKS` is never used
[INFO] [stdout]    --> src/tasks.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub static DEMO_TASKS: OnceLock<DemoTasksMap> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_demo_tasks` is never used
[INFO] [stdout]    --> src/tasks.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn get_demo_tasks() -> &'static DemoTasksMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_demo_id` is never used
[INFO] [stdout]    --> src/tasks.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_demo_id(id: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `router` is never used
[INFO] [stdout]    --> src/tasks.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn router() -> Router<DbPool> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn complete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:297:10
[INFO] [stdout]     |
[INFO] [stdout] 297 | async fn delete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_task` is never used
[INFO] [stdout]    --> src/tasks.rs:309:10
[INFO] [stdout]     |
[INFO] [stdout] 309 | async fn restore_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_show` is never used
[INFO] [stdout]    --> src/tasks.rs:321:10
[INFO] [stdout]     |
[INFO] [stdout] 321 | async fn task_show(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/tasks.rs:348:10
[INFO] [stdout]     |
[INFO] [stdout] 348 | async fn delete_completion(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homepage` is never used
[INFO] [stdout]    --> src/tasks.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn homepage(State(pool): State<DbPool>) -> Html<String> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub struct DailyQuery {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_today` is never used
[INFO] [stdout]    --> src/tasks.rs:556:14
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub async fn daily_today(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page` is never used
[INFO] [stdout]    --> src/tasks.rs:572:14
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub async fn daily_page(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:579:10
[INFO] [stdout]     |
[INFO] [stdout] 579 | async fn daily_page_inner(pool: &DbPool, year: i32, month: u32, day: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `days_in_month` is never used
[INFO] [stdout]    --> src/tasks.rs:818:4
[INFO] [stdout]     |
[INFO] [stdout] 818 | fn days_in_month(year: i32, month: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CalendarQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:836:12
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub struct CalendarQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_today` is never used
[INFO] [stdout]    --> src/tasks.rs:842:14
[INFO] [stdout]     |
[INFO] [stdout] 842 | pub async fn calendar_today(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page` is never used
[INFO] [stdout]    --> src/tasks.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub async fn calendar_page(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:864:10
[INFO] [stdout]     |
[INFO] [stdout] 864 | async fn calendar_page_inner(pool: &DbPool, year: i32, month: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_card` is never used
[INFO] [stdout]     --> src/tasks.rs:1099:4
[INFO] [stdout]      |
[INFO] [stdout] 1099 | fn render_task_card(task: &DemoTask, status: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_show_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1163:4
[INFO] [stdout]      |
[INFO] [stdout] 1163 | fn render_task_show_page(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_calendar` is never used
[INFO] [stdout]     --> src/tasks.rs:1363:4
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn render_calendar(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_due_on_date` is never used
[INFO] [stdout]     --> src/tasks.rs:1504:4
[INFO] [stdout]      |
[INFO] [stdout] 1504 | fn is_due_on_date(task: &DemoTask, date: chrono::NaiveDate) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_due_time` is never used
[INFO] [stdout]     --> src/tasks.rs:1555:4
[INFO] [stdout]      |
[INFO] [stdout] 1555 | fn get_due_time(task: &DemoTask, _date: chrono::NaiveDate) -> chrono::NaiveTime {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_next_due_after` is never used
[INFO] [stdout]     --> src/tasks.rs:1569:4
[INFO] [stdout]      |
[INFO] [stdout] 1569 | fn find_next_due_after(task: &DemoTask, after: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_completions_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1588:4
[INFO] [stdout]      |
[INFO] [stdout] 1588 | fn render_completions_list(task_id: &str, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListQuery` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1627:12
[INFO] [stdout]      |
[INFO] [stdout] 1627 | pub struct ListQuery {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_sort` is never used
[INFO] [stdout]     --> src/tasks.rs:1636:4
[INFO] [stdout]      |
[INFO] [stdout] 1636 | fn default_sort() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1640:4
[INFO] [stdout]      |
[INFO] [stdout] 1640 | fn default_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_per_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1644:4
[INFO] [stdout]      |
[INFO] [stdout] 1644 | fn default_per_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_index` is never used
[INFO] [stdout]     --> src/tasks.rs:1649:10
[INFO] [stdout]      |
[INFO] [stdout] 1649 | async fn tasks_index(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1704:10
[INFO] [stdout]      |
[INFO] [stdout] 1704 | async fn tasks_list(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit` is never used
[INFO] [stdout]     --> src/tasks.rs:1709:10
[INFO] [stdout]      |
[INFO] [stdout] 1709 | async fn task_edit(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:1731:10
[INFO] [stdout]      |
[INFO] [stdout] 1731 | async fn task_edit_modal(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskForm` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1754:12
[INFO] [stdout]      |
[INFO] [stdout] 1754 | pub struct TaskForm {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_demo_task` and `validate` are never used
[INFO] [stdout]     --> src/tasks.rs:1851:12
[INFO] [stdout]      |
[INFO] [stdout] 1850 | impl TaskForm {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] 1851 |     pub fn to_demo_task(&self, id: &str, base_task: &DemoTask) -> DemoTask {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2025 |     pub fn validate(&self) -> FormErrors {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2055:10
[INFO] [stdout]      |
[INFO] [stdout] 2055 | async fn save_task(
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2109:10
[INFO] [stdout]      |
[INFO] [stdout] 2109 | async fn change_schedule_type(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2138:10
[INFO] [stdout]      |
[INFO] [stdout] 2138 | async fn new_task_modal() -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2144:10
[INFO] [stdout]      |
[INFO] [stdout] 2144 | async fn create_task(State(pool): State<DbPool>, Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2172:10
[INFO] [stdout]      |
[INFO] [stdout] 2172 | async fn new_task_schedule_type(Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2178:4
[INFO] [stdout]      |
[INFO] [stdout] 2178 | fn create_default_task() -> DemoTask {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoTask` is never constructed
[INFO] [stdout]     --> src/tasks.rs:2198:12
[INFO] [stdout]      |
[INFO] [stdout] 2198 | pub struct DemoTask {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tasks.rs:2218:12
[INFO] [stdout]      |
[INFO] [stdout] 2215 | impl DemoTask {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2218 |     pub fn next_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2252 |     fn is_distant_future(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2260 |     pub fn is_once_completed(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2265 |     pub fn time_as_readable_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2305 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2314 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2327 |     pub fn is_inactive(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2350 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_n_days` is never used
[INFO] [stdout]     --> src/tasks.rs:2378:8
[INFO] [stdout]      |
[INFO] [stdout] 2378 | pub fn default_n_days() -> NDays {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_n_weeks` is never used
[INFO] [stdout]     --> src/tasks.rs:2385:8
[INFO] [stdout]      |
[INFO] [stdout] 2385 | pub fn default_n_weeks() -> NWeeks {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_monthwise` is never used
[INFO] [stdout]     --> src/tasks.rs:2401:8
[INFO] [stdout]      |
[INFO] [stdout] 2401 | pub fn default_monthwise() -> Monthwise {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_weeks_of_month` is never used
[INFO] [stdout]     --> src/tasks.rs:2408:8
[INFO] [stdout]      |
[INFO] [stdout] 2408 | pub fn default_weeks_of_month() -> WeeksOfMonth {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_certain_months` is never used
[INFO] [stdout]     --> src/tasks.rs:2424:8
[INFO] [stdout]      |
[INFO] [stdout] 2424 | pub fn default_certain_months() -> CertainMonths {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_once` is never used
[INFO] [stdout]     --> src/tasks.rs:2432:8
[INFO] [stdout]      |
[INFO] [stdout] 2432 | pub fn default_once() -> Once {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_sort_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2442:4
[INFO] [stdout]      |
[INFO] [stdout] 2442 | fn render_sort_select(current_sort: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_per_page_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2454:4
[INFO] [stdout]      |
[INFO] [stdout] 2454 | fn render_per_page_select(current_per_page: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list` is never used
[INFO] [stdout]     --> src/tasks.rs:2471:10
[INFO] [stdout]      |
[INFO] [stdout] 2471 | async fn render_task_list(pool: &DbPool, sort: &str, page: i64, per_page: i64) -> String {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pagination` is never used
[INFO] [stdout]     --> src/tasks.rs:2517:4
[INFO] [stdout]      |
[INFO] [stdout] 2517 | fn render_pagination(current_page: i64, total_pages: i64, per_page: i64, sort: &str, total_count: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list_item` is never used
[INFO] [stdout]     --> src/tasks.rs:2627:4
[INFO] [stdout]      |
[INFO] [stdout] 2627 | fn render_task_list_item(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]     --> src/tasks.rs:2661:4
[INFO] [stdout]      |
[INFO] [stdout] 2661 | fn html_escape(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2668:4
[INFO] [stdout]      |
[INFO] [stdout] 2668 | fn render_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2680:4
[INFO] [stdout]      |
[INFO] [stdout] 2680 | fn render_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2692:4
[INFO] [stdout]      |
[INFO] [stdout] 2692 | fn render_new_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2704:4
[INFO] [stdout]      |
[INFO] [stdout] 2704 | fn render_new_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2716:8
[INFO] [stdout]      |
[INFO] [stdout] 2716 | pub fn render_task_editor(task: &DemoTask) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor_inner` is never used
[INFO] [stdout]     --> src/tasks.rs:2720:4
[INFO] [stdout]      |
[INFO] [stdout] 2720 | fn render_task_editor_inner(task: &DemoTask, is_modal: bool, is_new: bool, form: Option<&TaskForm>, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_schedule_type_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2899:4
[INFO] [stdout]      |
[INFO] [stdout] 2899 | fn render_schedule_type_select(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_alerting_time_input` is never used
[INFO] [stdout]     --> src/tasks.rs:2929:4
[INFO] [stdout]      |
[INFO] [stdout] 2929 | fn render_alerting_time_input(task_id: &str, alerting_time: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_alerting_time` is never used
[INFO] [stdout]     --> src/tasks.rs:2981:4
[INFO] [stdout]      |
[INFO] [stdout] 2981 | fn format_alerting_time(minutes: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_days_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2998:4
[INFO] [stdout]      |
[INFO] [stdout] 2998 | fn render_n_days_editor(task_id: &str, n_days: &NDays) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_weeks_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3031:4
[INFO] [stdout]      |
[INFO] [stdout] 3031 | fn render_n_weeks_editor(task_id: &str, n_weeks: &NWeeks) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_monthwise_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3133:4
[INFO] [stdout]      |
[INFO] [stdout] 3133 | fn render_monthwise_editor(task_id: &str, monthwise: &Monthwise, raw_days: Option<&str>, error: &Option<String>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_weeks_of_month_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3180:4
[INFO] [stdout]      |
[INFO] [stdout] 3180 | fn render_weeks_of_month_editor(task_id: &str, weeks_of_month: &WeeksOfMonth) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_certain_months_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3298:4
[INFO] [stdout]      |
[INFO] [stdout] 3298 | fn render_certain_months_editor(task_id: &str, certain_months: &CertainMonths, raw_days: Option<&str>, error: &Option<String>) -> ...
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_once_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3378:4
[INFO] [stdout]      |
[INFO] [stdout] 3378 | fn render_once_editor(task_id: &str, once: &Once) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]    --> src/db.rs:155:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 155 |     pub id: i64,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DbSchedule` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `APP_TIMEZONE` is never used
[INFO] [stdout]  --> src/config.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | static APP_TIMEZONE: OnceLock<Tz> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOUCH_MODE` is never used
[INFO] [stdout]  --> src/config.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static TOUCH_MODE: OnceLock<bool> = OnceLock::new();
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_timezone` is never used
[INFO] [stdout]   --> src/config.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn init_timezone(tz_str: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_timezone` is never used
[INFO] [stdout]   --> src/config.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_timezone() -> Tz {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn init_touch_mode(enabled: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_touch_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_completion` is never used
[INFO] [stdout]   --> src/db.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn add_completion(pool: &DbPool, task_id: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_latest_completion` is never used
[INFO] [stdout]    --> src/db.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub async fn get_latest_completion(pool: &DbPool, task_id: &str) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionRecord` is never constructed
[INFO] [stdout]    --> src/db.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct CompletionRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_completions` is never used
[INFO] [stdout]    --> src/db.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn get_all_completions(pool: &DbPool, task_id: &str) -> Result<Vec<CompletionRecord>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/db.rs:145:14
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub async fn delete_completion(pool: &DbPool, completion_id: i64) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbSchedule` is never constructed
[INFO] [stdout]    --> src/db.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbTask` is never constructed
[INFO] [stdout]    --> src/db.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct DbTask {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_time` is never used
[INFO] [stdout]    --> src/db.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn parse_time(s: &Option<String>) -> NaiveTime {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int_list` is never used
[INFO] [stdout]    --> src/db.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_int_list(s: &Option<String>) -> Vec<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_schedule_parts` is never used
[INFO] [stdout]    --> src/db.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl DbSchedule {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 229 |     pub fn to_schedule_parts(&self) -> (ScheduleKind, NDays, NWeeks, Monthwise, WeeksOfMonth, CertainMonths, Once) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task` is never used
[INFO] [stdout]    --> src/db.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub async fn get_task(pool: &DbPool, task_id: i64) -> Result<Option<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_tasks` is never used
[INFO] [stdout]    --> src/db.rs:339:14
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub async fn get_all_tasks(pool: &DbPool) -> Result<Vec<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task_count` is never used
[INFO] [stdout]    --> src/db.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub async fn get_task_count(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tasks_paginated` is never used
[INFO] [stdout]    --> src/db.rs:392:14
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub async fn get_tasks_paginated(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]    --> src/db.rs:451:14
[INFO] [stdout]     |
[INFO] [stdout] 451 | pub async fn save_task(pool: &DbPool, task: &DemoTask) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_task_deleted_at` is never used
[INFO] [stdout]    --> src/db.rs:663:14
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub async fn set_task_deleted_at(pool: &DbPool, task_id: i64, deleted_at: Option<DateTime<Utc>>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScheduleKind` is never used
[INFO] [stdout]   --> src/schedule.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ScheduleKind {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Once` is never constructed
[INFO] [stdout]   --> src/schedule.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Once {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CertainMonths` is never constructed
[INFO] [stdout]    --> src/schedule.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct CertainMonths {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DemoTasksMap` is never used
[INFO] [stdout]    --> src/tasks.rs:142:10
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub type DemoTasksMap = Arc<Mutex<HashMap<String, DemoTask>>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEMO_TASKS` is never used
[INFO] [stdout]    --> src/tasks.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub static DEMO_TASKS: OnceLock<DemoTasksMap> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_demo_tasks` is never used
[INFO] [stdout]    --> src/tasks.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn get_demo_tasks() -> &'static DemoTasksMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_demo_id` is never used
[INFO] [stdout]    --> src/tasks.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_demo_id(id: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `router` is never used
[INFO] [stdout]    --> src/tasks.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn router() -> Router<DbPool> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn complete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:297:10
[INFO] [stdout]     |
[INFO] [stdout] 297 | async fn delete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_task` is never used
[INFO] [stdout]    --> src/tasks.rs:309:10
[INFO] [stdout]     |
[INFO] [stdout] 309 | async fn restore_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_show` is never used
[INFO] [stdout]    --> src/tasks.rs:321:10
[INFO] [stdout]     |
[INFO] [stdout] 321 | async fn task_show(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/tasks.rs:348:10
[INFO] [stdout]     |
[INFO] [stdout] 348 | async fn delete_completion(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homepage` is never used
[INFO] [stdout]    --> src/tasks.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn homepage(State(pool): State<DbPool>) -> Html<String> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub struct DailyQuery {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_today` is never used
[INFO] [stdout]    --> src/tasks.rs:556:14
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub async fn daily_today(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page` is never used
[INFO] [stdout]    --> src/tasks.rs:572:14
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub async fn daily_page(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:579:10
[INFO] [stdout]     |
[INFO] [stdout] 579 | async fn daily_page_inner(pool: &DbPool, year: i32, month: u32, day: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `days_in_month` is never used
[INFO] [stdout]    --> src/tasks.rs:818:4
[INFO] [stdout]     |
[INFO] [stdout] 818 | fn days_in_month(year: i32, month: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CalendarQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:836:12
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub struct CalendarQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_today` is never used
[INFO] [stdout]    --> src/tasks.rs:842:14
[INFO] [stdout]     |
[INFO] [stdout] 842 | pub async fn calendar_today(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page` is never used
[INFO] [stdout]    --> src/tasks.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub async fn calendar_page(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:864:10
[INFO] [stdout]     |
[INFO] [stdout] 864 | async fn calendar_page_inner(pool: &DbPool, year: i32, month: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_card` is never used
[INFO] [stdout]     --> src/tasks.rs:1099:4
[INFO] [stdout]      |
[INFO] [stdout] 1099 | fn render_task_card(task: &DemoTask, status: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_show_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1163:4
[INFO] [stdout]      |
[INFO] [stdout] 1163 | fn render_task_show_page(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_calendar` is never used
[INFO] [stdout]     --> src/tasks.rs:1363:4
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn render_calendar(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_due_on_date` is never used
[INFO] [stdout]     --> src/tasks.rs:1504:4
[INFO] [stdout]      |
[INFO] [stdout] 1504 | fn is_due_on_date(task: &DemoTask, date: chrono::NaiveDate) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_due_time` is never used
[INFO] [stdout]     --> src/tasks.rs:1555:4
[INFO] [stdout]      |
[INFO] [stdout] 1555 | fn get_due_time(task: &DemoTask, _date: chrono::NaiveDate) -> chrono::NaiveTime {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_next_due_after` is never used
[INFO] [stdout]     --> src/tasks.rs:1569:4
[INFO] [stdout]      |
[INFO] [stdout] 1569 | fn find_next_due_after(task: &DemoTask, after: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_completions_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1588:4
[INFO] [stdout]      |
[INFO] [stdout] 1588 | fn render_completions_list(task_id: &str, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListQuery` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1627:12
[INFO] [stdout]      |
[INFO] [stdout] 1627 | pub struct ListQuery {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_sort` is never used
[INFO] [stdout]     --> src/tasks.rs:1636:4
[INFO] [stdout]      |
[INFO] [stdout] 1636 | fn default_sort() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1640:4
[INFO] [stdout]      |
[INFO] [stdout] 1640 | fn default_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_per_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1644:4
[INFO] [stdout]      |
[INFO] [stdout] 1644 | fn default_per_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_index` is never used
[INFO] [stdout]     --> src/tasks.rs:1649:10
[INFO] [stdout]      |
[INFO] [stdout] 1649 | async fn tasks_index(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1704:10
[INFO] [stdout]      |
[INFO] [stdout] 1704 | async fn tasks_list(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit` is never used
[INFO] [stdout]     --> src/tasks.rs:1709:10
[INFO] [stdout]      |
[INFO] [stdout] 1709 | async fn task_edit(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:1731:10
[INFO] [stdout]      |
[INFO] [stdout] 1731 | async fn task_edit_modal(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]     --> src/tasks.rs:1755:9
[INFO] [stdout]      |
[INFO] [stdout] 1754 | pub struct TaskForm {
[INFO] [stdout]      |            -------- fields in this struct
[INFO] [stdout] 1755 |     pub name: String,
[INFO] [stdout]      |         ^^^^
[INFO] [stdout] 1756 |     pub details: String,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1759 |     pub n_days_count: Option<i32>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1760 |     #[serde(default)]
[INFO] [stdout] 1761 |     pub n_days_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1762 |     #[serde(default)]
[INFO] [stdout] 1763 |     pub n_weeks_count: Option<i32>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1764 |     #[serde(default)]
[INFO] [stdout] 1765 |     pub n_weeks_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1766 |     #[serde(default)]
[INFO] [stdout] 1767 |     pub dow_sun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1768 |     #[serde(default)]
[INFO] [stdout] 1769 |     pub dow_mon: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1770 |     #[serde(default)]
[INFO] [stdout] 1771 |     pub dow_tue: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1772 |     #[serde(default)]
[INFO] [stdout] 1773 |     pub dow_wed: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1774 |     #[serde(default)]
[INFO] [stdout] 1775 |     pub dow_thu: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1776 |     #[serde(default)]
[INFO] [stdout] 1777 |     pub dow_fri: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1778 |     #[serde(default)]
[INFO] [stdout] 1779 |     pub dow_sat: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1783 |     pub monthwise_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout] 1784 |     #[serde(default)]
[INFO] [stdout] 1785 |     pub wom_week_1: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1786 |     #[serde(default)]
[INFO] [stdout] 1787 |     pub wom_week_2: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1788 |     #[serde(default)]
[INFO] [stdout] 1789 |     pub wom_week_3: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1790 |     #[serde(default)]
[INFO] [stdout] 1791 |     pub wom_week_4: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1792 |     #[serde(default)]
[INFO] [stdout] 1793 |     pub wom_week_5: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1794 |     #[serde(default)]
[INFO] [stdout] 1795 |     pub wom_dow_sun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1796 |     #[serde(default)]
[INFO] [stdout] 1797 |     pub wom_dow_mon: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1798 |     #[serde(default)]
[INFO] [stdout] 1799 |     pub wom_dow_tue: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1800 |     #[serde(default)]
[INFO] [stdout] 1801 |     pub wom_dow_wed: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1802 |     #[serde(default)]
[INFO] [stdout] 1803 |     pub wom_dow_thu: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1804 |     #[serde(default)]
[INFO] [stdout] 1805 |     pub wom_dow_fri: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1806 |     #[serde(default)]
[INFO] [stdout] 1807 |     pub wom_dow_sat: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1808 |     #[serde(default)]
[INFO] [stdout] 1809 |     pub wom_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1810 |     #[serde(default)]
[INFO] [stdout] 1811 |     pub cm_month_jan: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1812 |     #[serde(default)]
[INFO] [stdout] 1813 |     pub cm_month_feb: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1814 |     #[serde(default)]
[INFO] [stdout] 1815 |     pub cm_month_mar: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1816 |     #[serde(default)]
[INFO] [stdout] 1817 |     pub cm_month_apr: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1818 |     #[serde(default)]
[INFO] [stdout] 1819 |     pub cm_month_may: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1820 |     #[serde(default)]
[INFO] [stdout] 1821 |     pub cm_month_jun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1822 |     #[serde(default)]
[INFO] [stdout] 1823 |     pub cm_month_jul: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1824 |     #[serde(default)]
[INFO] [stdout] 1825 |     pub cm_month_aug: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1826 |     #[serde(default)]
[INFO] [stdout] 1827 |     pub cm_month_sep: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1828 |     #[serde(default)]
[INFO] [stdout] 1829 |     pub cm_month_oct: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1830 |     #[serde(default)]
[INFO] [stdout] 1831 |     pub cm_month_nov: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1832 |     #[serde(default)]
[INFO] [stdout] 1833 |     pub cm_month_dec: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1837 |     pub cm_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1838 |     #[serde(default)]
[INFO] [stdout] 1839 |     pub once_now: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1840 |     #[serde(default)]
[INFO] [stdout] 1841 |     pub once_date: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1842 |     #[serde(default)]
[INFO] [stdout] 1843 |     pub once_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1844 |     #[serde(default)]
[INFO] [stdout] 1845 |     pub alerting_time: Option<i64>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1846 |     #[serde(default)]
[INFO] [stdout] 1847 |     pub completeable: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `TaskForm` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_demo_task` is never used
[INFO] [stdout]     --> src/tasks.rs:1851:12
[INFO] [stdout]      |
[INFO] [stdout] 1850 | impl TaskForm {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] 1851 |     pub fn to_demo_task(&self, id: &str, base_task: &DemoTask) -> DemoTask {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2055:10
[INFO] [stdout]      |
[INFO] [stdout] 2055 | async fn save_task(
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2109:10
[INFO] [stdout]      |
[INFO] [stdout] 2109 | async fn change_schedule_type(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2138:10
[INFO] [stdout]      |
[INFO] [stdout] 2138 | async fn new_task_modal() -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2144:10
[INFO] [stdout]      |
[INFO] [stdout] 2144 | async fn create_task(State(pool): State<DbPool>, Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2172:10
[INFO] [stdout]      |
[INFO] [stdout] 2172 | async fn new_task_schedule_type(Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2178:4
[INFO] [stdout]      |
[INFO] [stdout] 2178 | fn create_default_task() -> DemoTask {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoTask` is never constructed
[INFO] [stdout]     --> src/tasks.rs:2198:12
[INFO] [stdout]      |
[INFO] [stdout] 2198 | pub struct DemoTask {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tasks.rs:2218:12
[INFO] [stdout]      |
[INFO] [stdout] 2215 | impl DemoTask {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2218 |     pub fn next_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2252 |     fn is_distant_future(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2260 |     pub fn is_once_completed(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2265 |     pub fn time_as_readable_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2305 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2314 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2327 |     pub fn is_inactive(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2350 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_certain_months` is never used
[INFO] [stdout]     --> src/tasks.rs:2424:8
[INFO] [stdout]      |
[INFO] [stdout] 2424 | pub fn default_certain_months() -> CertainMonths {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_once` is never used
[INFO] [stdout]     --> src/tasks.rs:2432:8
[INFO] [stdout]      |
[INFO] [stdout] 2432 | pub fn default_once() -> Once {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_sort_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2442:4
[INFO] [stdout]      |
[INFO] [stdout] 2442 | fn render_sort_select(current_sort: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_per_page_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2454:4
[INFO] [stdout]      |
[INFO] [stdout] 2454 | fn render_per_page_select(current_per_page: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list` is never used
[INFO] [stdout]     --> src/tasks.rs:2471:10
[INFO] [stdout]      |
[INFO] [stdout] 2471 | async fn render_task_list(pool: &DbPool, sort: &str, page: i64, per_page: i64) -> String {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pagination` is never used
[INFO] [stdout]     --> src/tasks.rs:2517:4
[INFO] [stdout]      |
[INFO] [stdout] 2517 | fn render_pagination(current_page: i64, total_pages: i64, per_page: i64, sort: &str, total_count: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list_item` is never used
[INFO] [stdout]     --> src/tasks.rs:2627:4
[INFO] [stdout]      |
[INFO] [stdout] 2627 | fn render_task_list_item(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]     --> src/tasks.rs:2661:4
[INFO] [stdout]      |
[INFO] [stdout] 2661 | fn html_escape(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2668:4
[INFO] [stdout]      |
[INFO] [stdout] 2668 | fn render_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2680:4
[INFO] [stdout]      |
[INFO] [stdout] 2680 | fn render_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2692:4
[INFO] [stdout]      |
[INFO] [stdout] 2692 | fn render_new_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2704:4
[INFO] [stdout]      |
[INFO] [stdout] 2704 | fn render_new_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2716:8
[INFO] [stdout]      |
[INFO] [stdout] 2716 | pub fn render_task_editor(task: &DemoTask) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor_inner` is never used
[INFO] [stdout]     --> src/tasks.rs:2720:4
[INFO] [stdout]      |
[INFO] [stdout] 2720 | fn render_task_editor_inner(task: &DemoTask, is_modal: bool, is_new: bool, form: Option<&TaskForm>, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_schedule_type_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2899:4
[INFO] [stdout]      |
[INFO] [stdout] 2899 | fn render_schedule_type_select(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_alerting_time_input` is never used
[INFO] [stdout]     --> src/tasks.rs:2929:4
[INFO] [stdout]      |
[INFO] [stdout] 2929 | fn render_alerting_time_input(task_id: &str, alerting_time: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_alerting_time` is never used
[INFO] [stdout]     --> src/tasks.rs:2981:4
[INFO] [stdout]      |
[INFO] [stdout] 2981 | fn format_alerting_time(minutes: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_days_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2998:4
[INFO] [stdout]      |
[INFO] [stdout] 2998 | fn render_n_days_editor(task_id: &str, n_days: &NDays) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_weeks_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3031:4
[INFO] [stdout]      |
[INFO] [stdout] 3031 | fn render_n_weeks_editor(task_id: &str, n_weeks: &NWeeks) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_monthwise_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3133:4
[INFO] [stdout]      |
[INFO] [stdout] 3133 | fn render_monthwise_editor(task_id: &str, monthwise: &Monthwise, raw_days: Option<&str>, error: &Option<String>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_weeks_of_month_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3180:4
[INFO] [stdout]      |
[INFO] [stdout] 3180 | fn render_weeks_of_month_editor(task_id: &str, weeks_of_month: &WeeksOfMonth) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_certain_months_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3298:4
[INFO] [stdout]      |
[INFO] [stdout] 3298 | fn render_certain_months_editor(task_id: &str, certain_months: &CertainMonths, raw_days: Option<&str>, error: &Option<String>) -> ...
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_once_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3378:4
[INFO] [stdout]      |
[INFO] [stdout] 3378 | fn render_once_editor(task_id: &str, once: &Once) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]    --> src/db.rs:155:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 155 |     pub id: i64,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DbSchedule` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NDays {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 57 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl NWeeks {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 88 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl Monthwise {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 134 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:228:19
[INFO] [stdout]     |
[INFO] [stdout] 227 | impl WeeksOfMonth {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 228 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_timezone` is never used
[INFO] [stdout]   --> src/config.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_timezone() -> Tz {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_touch_mode` is never used
[INFO] [stdout]   --> src/config.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_touch_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_completion` is never used
[INFO] [stdout]   --> src/db.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn add_completion(pool: &DbPool, task_id: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_latest_completion` is never used
[INFO] [stdout]    --> src/db.rs:105:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub async fn get_latest_completion(pool: &DbPool, task_id: &str) -> Result<Option<chrono::DateTime<chrono::Utc>>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionRecord` is never constructed
[INFO] [stdout]    --> src/db.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct CompletionRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_completions` is never used
[INFO] [stdout]    --> src/db.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn get_all_completions(pool: &DbPool, task_id: &str) -> Result<Vec<CompletionRecord>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/db.rs:145:14
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub async fn delete_completion(pool: &DbPool, completion_id: i64) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbSchedule` is never constructed
[INFO] [stdout]    --> src/db.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct DbSchedule {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/db.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct DbTask {
[INFO] [stdout]     |            ------ fields in this struct
[INFO] [stdout] 193 |     pub id: i64,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 194 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 195 |     pub details: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 196 |     pub schedule_id: i64,
[INFO] [stdout] 197 |     pub alerting_time: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 198 |     pub completeable: Option<i32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 199 |     pub created_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 200 |     pub deleted_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DbTask` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbCompletion` is never constructed
[INFO] [stdout]    --> src/db.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub struct DbCompletion {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_time` is never used
[INFO] [stdout]    --> src/db.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn parse_time(s: &Option<String>) -> NaiveTime {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int_list` is never used
[INFO] [stdout]    --> src/db.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_int_list(s: &Option<String>) -> Vec<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_schedule_parts` is never used
[INFO] [stdout]    --> src/db.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl DbSchedule {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 229 |     pub fn to_schedule_parts(&self) -> (ScheduleKind, NDays, NWeeks, Monthwise, WeeksOfMonth, CertainMonths, Once) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task` is never used
[INFO] [stdout]    --> src/db.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub async fn get_task(pool: &DbPool, task_id: i64) -> Result<Option<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_tasks` is never used
[INFO] [stdout]    --> src/db.rs:339:14
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub async fn get_all_tasks(pool: &DbPool) -> Result<Vec<DemoTask>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_task_count` is never used
[INFO] [stdout]    --> src/db.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub async fn get_task_count(pool: &DbPool) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tasks_paginated` is never used
[INFO] [stdout]    --> src/db.rs:392:14
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub async fn get_tasks_paginated(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_task_deleted_at` is never used
[INFO] [stdout]    --> src/db.rs:663:14
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub async fn set_task_deleted_at(pool: &DbPool, task_id: i64, deleted_at: Option<DateTime<Utc>>) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schedule` is never constructed
[INFO] [stdout]  --> src/schedule.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Schedule {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Once` is never constructed
[INFO] [stdout]   --> src/schedule.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ScheduleKind {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     Once,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScheduleKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]   --> src/schedule.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Once {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 44 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `most_recent_due_date` is never used
[INFO] [stdout]    --> src/schedule.rs:274:19
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CertainMonths {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 274 |     pub(crate) fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Task` is never constructed
[INFO] [stdout]  --> src/task.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Task {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Completion` is never constructed
[INFO] [stdout]   --> src/task.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Completion {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_due`, `is_alerting`, `most_recent_due_date`, and `last_completion` are never used
[INFO] [stdout]   --> src/task.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Task {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 17 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn last_completion(&self) -> Option<Completion> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DemoTasksMap` is never used
[INFO] [stdout]    --> src/tasks.rs:142:10
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub type DemoTasksMap = Arc<Mutex<HashMap<String, DemoTask>>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEMO_TASKS` is never used
[INFO] [stdout]    --> src/tasks.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub static DEMO_TASKS: OnceLock<DemoTasksMap> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_demo_tasks` is never used
[INFO] [stdout]    --> src/tasks.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn get_demo_tasks() -> &'static DemoTasksMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_demo_id` is never used
[INFO] [stdout]    --> src/tasks.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_demo_id(id: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `router` is never used
[INFO] [stdout]    --> src/tasks.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn router() -> Router<DbPool> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn complete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/tasks.rs:297:10
[INFO] [stdout]     |
[INFO] [stdout] 297 | async fn delete_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_task` is never used
[INFO] [stdout]    --> src/tasks.rs:309:10
[INFO] [stdout]     |
[INFO] [stdout] 309 | async fn restore_task(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_show` is never used
[INFO] [stdout]    --> src/tasks.rs:321:10
[INFO] [stdout]     |
[INFO] [stdout] 321 | async fn task_show(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_completion` is never used
[INFO] [stdout]    --> src/tasks.rs:348:10
[INFO] [stdout]     |
[INFO] [stdout] 348 | async fn delete_completion(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homepage` is never used
[INFO] [stdout]    --> src/tasks.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn homepage(State(pool): State<DbPool>) -> Html<String> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub struct DailyQuery {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_today` is never used
[INFO] [stdout]    --> src/tasks.rs:556:14
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub async fn daily_today(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page` is never used
[INFO] [stdout]    --> src/tasks.rs:572:14
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub async fn daily_page(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `daily_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:579:10
[INFO] [stdout]     |
[INFO] [stdout] 579 | async fn daily_page_inner(pool: &DbPool, year: i32, month: u32, day: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `days_in_month` is never used
[INFO] [stdout]    --> src/tasks.rs:818:4
[INFO] [stdout]     |
[INFO] [stdout] 818 | fn days_in_month(year: i32, month: u32) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CalendarQuery` is never constructed
[INFO] [stdout]    --> src/tasks.rs:836:12
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub struct CalendarQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_today` is never used
[INFO] [stdout]    --> src/tasks.rs:842:14
[INFO] [stdout]     |
[INFO] [stdout] 842 | pub async fn calendar_today(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page` is never used
[INFO] [stdout]    --> src/tasks.rs:857:14
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub async fn calendar_page(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calendar_page_inner` is never used
[INFO] [stdout]    --> src/tasks.rs:864:10
[INFO] [stdout]     |
[INFO] [stdout] 864 | async fn calendar_page_inner(pool: &DbPool, year: i32, month: u32) -> Html<String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_card` is never used
[INFO] [stdout]     --> src/tasks.rs:1099:4
[INFO] [stdout]      |
[INFO] [stdout] 1099 | fn render_task_card(task: &DemoTask, status: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_show_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1163:4
[INFO] [stdout]      |
[INFO] [stdout] 1163 | fn render_task_show_page(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_calendar` is never used
[INFO] [stdout]     --> src/tasks.rs:1363:4
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn render_calendar(task: &DemoTask, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_due_on_date` is never used
[INFO] [stdout]     --> src/tasks.rs:1504:4
[INFO] [stdout]      |
[INFO] [stdout] 1504 | fn is_due_on_date(task: &DemoTask, date: chrono::NaiveDate) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_due_time` is never used
[INFO] [stdout]     --> src/tasks.rs:1555:4
[INFO] [stdout]      |
[INFO] [stdout] 1555 | fn get_due_time(task: &DemoTask, _date: chrono::NaiveDate) -> chrono::NaiveTime {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_next_due_after` is never used
[INFO] [stdout]     --> src/tasks.rs:1569:4
[INFO] [stdout]      |
[INFO] [stdout] 1569 | fn find_next_due_after(task: &DemoTask, after: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_completions_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1588:4
[INFO] [stdout]      |
[INFO] [stdout] 1588 | fn render_completions_list(task_id: &str, completions: &[db::CompletionRecord]) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListQuery` is never constructed
[INFO] [stdout]     --> src/tasks.rs:1627:12
[INFO] [stdout]      |
[INFO] [stdout] 1627 | pub struct ListQuery {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_sort` is never used
[INFO] [stdout]     --> src/tasks.rs:1636:4
[INFO] [stdout]      |
[INFO] [stdout] 1636 | fn default_sort() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1640:4
[INFO] [stdout]      |
[INFO] [stdout] 1640 | fn default_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_per_page` is never used
[INFO] [stdout]     --> src/tasks.rs:1644:4
[INFO] [stdout]      |
[INFO] [stdout] 1644 | fn default_per_page() -> i64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_index` is never used
[INFO] [stdout]     --> src/tasks.rs:1649:10
[INFO] [stdout]      |
[INFO] [stdout] 1649 | async fn tasks_index(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tasks_list` is never used
[INFO] [stdout]     --> src/tasks.rs:1704:10
[INFO] [stdout]      |
[INFO] [stdout] 1704 | async fn tasks_list(State(pool): State<DbPool>, Query(query): Query<ListQuery>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit` is never used
[INFO] [stdout]     --> src/tasks.rs:1709:10
[INFO] [stdout]      |
[INFO] [stdout] 1709 | async fn task_edit(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `task_edit_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:1731:10
[INFO] [stdout]      |
[INFO] [stdout] 1731 | async fn task_edit_modal(State(pool): State<DbPool>, Path(id): Path<String>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]     --> src/tasks.rs:1755:9
[INFO] [stdout]      |
[INFO] [stdout] 1754 | pub struct TaskForm {
[INFO] [stdout]      |            -------- fields in this struct
[INFO] [stdout] 1755 |     pub name: String,
[INFO] [stdout]      |         ^^^^
[INFO] [stdout] 1756 |     pub details: String,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1759 |     pub n_days_count: Option<i32>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1760 |     #[serde(default)]
[INFO] [stdout] 1761 |     pub n_days_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1762 |     #[serde(default)]
[INFO] [stdout] 1763 |     pub n_weeks_count: Option<i32>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1764 |     #[serde(default)]
[INFO] [stdout] 1765 |     pub n_weeks_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1766 |     #[serde(default)]
[INFO] [stdout] 1767 |     pub dow_sun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1768 |     #[serde(default)]
[INFO] [stdout] 1769 |     pub dow_mon: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1770 |     #[serde(default)]
[INFO] [stdout] 1771 |     pub dow_tue: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1772 |     #[serde(default)]
[INFO] [stdout] 1773 |     pub dow_wed: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1774 |     #[serde(default)]
[INFO] [stdout] 1775 |     pub dow_thu: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1776 |     #[serde(default)]
[INFO] [stdout] 1777 |     pub dow_fri: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1778 |     #[serde(default)]
[INFO] [stdout] 1779 |     pub dow_sat: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1783 |     pub monthwise_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout] 1784 |     #[serde(default)]
[INFO] [stdout] 1785 |     pub wom_week_1: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1786 |     #[serde(default)]
[INFO] [stdout] 1787 |     pub wom_week_2: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1788 |     #[serde(default)]
[INFO] [stdout] 1789 |     pub wom_week_3: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1790 |     #[serde(default)]
[INFO] [stdout] 1791 |     pub wom_week_4: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1792 |     #[serde(default)]
[INFO] [stdout] 1793 |     pub wom_week_5: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1794 |     #[serde(default)]
[INFO] [stdout] 1795 |     pub wom_dow_sun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1796 |     #[serde(default)]
[INFO] [stdout] 1797 |     pub wom_dow_mon: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1798 |     #[serde(default)]
[INFO] [stdout] 1799 |     pub wom_dow_tue: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1800 |     #[serde(default)]
[INFO] [stdout] 1801 |     pub wom_dow_wed: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1802 |     #[serde(default)]
[INFO] [stdout] 1803 |     pub wom_dow_thu: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1804 |     #[serde(default)]
[INFO] [stdout] 1805 |     pub wom_dow_fri: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1806 |     #[serde(default)]
[INFO] [stdout] 1807 |     pub wom_dow_sat: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 1808 |     #[serde(default)]
[INFO] [stdout] 1809 |     pub wom_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1810 |     #[serde(default)]
[INFO] [stdout] 1811 |     pub cm_month_jan: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1812 |     #[serde(default)]
[INFO] [stdout] 1813 |     pub cm_month_feb: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1814 |     #[serde(default)]
[INFO] [stdout] 1815 |     pub cm_month_mar: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1816 |     #[serde(default)]
[INFO] [stdout] 1817 |     pub cm_month_apr: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1818 |     #[serde(default)]
[INFO] [stdout] 1819 |     pub cm_month_may: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1820 |     #[serde(default)]
[INFO] [stdout] 1821 |     pub cm_month_jun: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1822 |     #[serde(default)]
[INFO] [stdout] 1823 |     pub cm_month_jul: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1824 |     #[serde(default)]
[INFO] [stdout] 1825 |     pub cm_month_aug: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1826 |     #[serde(default)]
[INFO] [stdout] 1827 |     pub cm_month_sep: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1828 |     #[serde(default)]
[INFO] [stdout] 1829 |     pub cm_month_oct: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1830 |     #[serde(default)]
[INFO] [stdout] 1831 |     pub cm_month_nov: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 1832 |     #[serde(default)]
[INFO] [stdout] 1833 |     pub cm_month_dec: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1837 |     pub cm_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 1838 |     #[serde(default)]
[INFO] [stdout] 1839 |     pub once_now: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^
[INFO] [stdout] 1840 |     #[serde(default)]
[INFO] [stdout] 1841 |     pub once_date: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1842 |     #[serde(default)]
[INFO] [stdout] 1843 |     pub once_time: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1844 |     #[serde(default)]
[INFO] [stdout] 1845 |     pub alerting_time: Option<i64>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1846 |     #[serde(default)]
[INFO] [stdout] 1847 |     pub completeable: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `TaskForm` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_demo_task` is never used
[INFO] [stdout]     --> src/tasks.rs:1851:12
[INFO] [stdout]      |
[INFO] [stdout] 1850 | impl TaskForm {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] 1851 |     pub fn to_demo_task(&self, id: &str, base_task: &DemoTask) -> DemoTask {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2055:10
[INFO] [stdout]      |
[INFO] [stdout] 2055 | async fn save_task(
[INFO] [stdout]      |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2109:10
[INFO] [stdout]      |
[INFO] [stdout] 2109 | async fn change_schedule_type(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2138:10
[INFO] [stdout]      |
[INFO] [stdout] 2138 | async fn new_task_modal() -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2144:10
[INFO] [stdout]      |
[INFO] [stdout] 2144 | async fn create_task(State(pool): State<DbPool>, Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_schedule_type` is never used
[INFO] [stdout]     --> src/tasks.rs:2172:10
[INFO] [stdout]      |
[INFO] [stdout] 2172 | async fn new_task_schedule_type(Form(form): Form<TaskForm>) -> Html<String> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_task` is never used
[INFO] [stdout]     --> src/tasks.rs:2178:4
[INFO] [stdout]      |
[INFO] [stdout] 2178 | fn create_default_task() -> DemoTask {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tasks.rs:2218:12
[INFO] [stdout]      |
[INFO] [stdout] 2215 | impl DemoTask {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2218 |     pub fn next_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2252 |     fn is_distant_future(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2260 |     pub fn is_once_completed(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2265 |     pub fn time_as_readable_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2305 |     pub fn is_due(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2314 |     pub fn is_alerting(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2327 |     pub fn is_inactive(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2350 |     pub fn most_recent_due_date(&self) -> DateTime<Utc> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_certain_months` is never used
[INFO] [stdout]     --> src/tasks.rs:2424:8
[INFO] [stdout]      |
[INFO] [stdout] 2424 | pub fn default_certain_months() -> CertainMonths {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_once` is never used
[INFO] [stdout]     --> src/tasks.rs:2432:8
[INFO] [stdout]      |
[INFO] [stdout] 2432 | pub fn default_once() -> Once {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_sort_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2442:4
[INFO] [stdout]      |
[INFO] [stdout] 2442 | fn render_sort_select(current_sort: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_per_page_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2454:4
[INFO] [stdout]      |
[INFO] [stdout] 2454 | fn render_per_page_select(current_per_page: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list` is never used
[INFO] [stdout]     --> src/tasks.rs:2471:10
[INFO] [stdout]      |
[INFO] [stdout] 2471 | async fn render_task_list(pool: &DbPool, sort: &str, page: i64, per_page: i64) -> String {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pagination` is never used
[INFO] [stdout]     --> src/tasks.rs:2517:4
[INFO] [stdout]      |
[INFO] [stdout] 2517 | fn render_pagination(current_page: i64, total_pages: i64, per_page: i64, sort: &str, total_count: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_list_item` is never used
[INFO] [stdout]     --> src/tasks.rs:2627:4
[INFO] [stdout]      |
[INFO] [stdout] 2627 | fn render_task_list_item(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]     --> src/tasks.rs:2661:4
[INFO] [stdout]      |
[INFO] [stdout] 2661 | fn html_escape(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2668:4
[INFO] [stdout]      |
[INFO] [stdout] 2668 | fn render_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2680:4
[INFO] [stdout]      |
[INFO] [stdout] 2680 | fn render_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal` is never used
[INFO] [stdout]     --> src/tasks.rs:2692:4
[INFO] [stdout]      |
[INFO] [stdout] 2692 | fn render_new_task_modal(task: &DemoTask) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_new_task_modal_with_errors` is never used
[INFO] [stdout]     --> src/tasks.rs:2704:4
[INFO] [stdout]      |
[INFO] [stdout] 2704 | fn render_new_task_modal_with_errors(task: &DemoTask, form: &TaskForm, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2716:8
[INFO] [stdout]      |
[INFO] [stdout] 2716 | pub fn render_task_editor(task: &DemoTask) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_task_editor_inner` is never used
[INFO] [stdout]     --> src/tasks.rs:2720:4
[INFO] [stdout]      |
[INFO] [stdout] 2720 | fn render_task_editor_inner(task: &DemoTask, is_modal: bool, is_new: bool, form: Option<&TaskForm>, errors: &FormErrors) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_schedule_type_select` is never used
[INFO] [stdout]     --> src/tasks.rs:2899:4
[INFO] [stdout]      |
[INFO] [stdout] 2899 | fn render_schedule_type_select(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_alerting_time_input` is never used
[INFO] [stdout]     --> src/tasks.rs:2929:4
[INFO] [stdout]      |
[INFO] [stdout] 2929 | fn render_alerting_time_input(task_id: &str, alerting_time: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_alerting_time` is never used
[INFO] [stdout]     --> src/tasks.rs:2981:4
[INFO] [stdout]      |
[INFO] [stdout] 2981 | fn format_alerting_time(minutes: i64) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_days_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:2998:4
[INFO] [stdout]      |
[INFO] [stdout] 2998 | fn render_n_days_editor(task_id: &str, n_days: &NDays) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_n_weeks_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3031:4
[INFO] [stdout]      |
[INFO] [stdout] 3031 | fn render_n_weeks_editor(task_id: &str, n_weeks: &NWeeks) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_monthwise_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3133:4
[INFO] [stdout]      |
[INFO] [stdout] 3133 | fn render_monthwise_editor(task_id: &str, monthwise: &Monthwise, raw_days: Option<&str>, error: &Option<String>) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_weeks_of_month_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3180:4
[INFO] [stdout]      |
[INFO] [stdout] 3180 | fn render_weeks_of_month_editor(task_id: &str, weeks_of_month: &WeeksOfMonth) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_certain_months_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3298:4
[INFO] [stdout]      |
[INFO] [stdout] 3298 | fn render_certain_months_editor(task_id: &str, certain_months: &CertainMonths, raw_days: Option<&str>, error: &Option<String>) -> ...
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_once_editor` is never used
[INFO] [stdout]     --> src/tasks.rs:3378:4
[INFO] [stdout]      |
[INFO] [stdout] 3378 | fn render_once_editor(task_id: &str, once: &Once) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 06s
[INFO] running `Command { std: "docker" "inspect" "cc68f682984516a99165119c94cdb9638a68a770ff1dfcceb2456ac341740632", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cc68f682984516a99165119c94cdb9638a68a770ff1dfcceb2456ac341740632", kill_on_drop: false }`
[INFO] [stdout] cc68f682984516a99165119c94cdb9638a68a770ff1dfcceb2456ac341740632
