[INFO] cloning repository https://github.com/arsfeld/spillway
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/arsfeld/spillway" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farsfeld%2Fspillway", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farsfeld%2Fspillway'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 09973dd377f57ec4b8b1dda353d16d371a6fb5d2
[INFO] checking arsfeld/spillway/09973dd377f57ec4b8b1dda353d16d371a6fb5d2 against master#f8463896a9b36a04899c013bd8825a7fd29dd7a4 for pr-151920
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farsfeld%2Fspillway" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/arsfeld/spillway
[INFO] finished tweaking git repo https://github.com/arsfeld/spillway
[INFO] tweaked toml for git repo https://github.com/arsfeld/spillway written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/arsfeld/spillway on toolchain f8463896a9b36a04899c013bd8825a7fd29dd7a4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/arsfeld/spillway 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" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded match_token v0.1.0
[INFO] [stderr]   Downloaded scraper v0.22.0
[INFO] [stderr]   Downloaded gdkx11-sys v0.18.2
[INFO] [stderr]   Downloaded dioxus-devtools-types v0.7.1
[INFO] [stderr]   Downloaded dioxus-html-internal-macro v0.7.1
[INFO] [stderr]   Downloaded subsecond-types v0.7.1
[INFO] [stderr]   Downloaded dioxus-config-macros v0.7.1
[INFO] [stderr]   Downloaded dioxus-config-macro v0.7.1
[INFO] [stderr]   Downloaded objc2-exception-helper v0.1.1
[INFO] [stderr]   Downloaded webview2-com-macros v0.8.0
[INFO] [stderr]   Downloaded windows-version v0.1.7
[INFO] [stderr]   Downloaded tokio-tungstenite v0.27.0
[INFO] [stderr]   Downloaded dlopen2 v0.8.1
[INFO] [stderr]   Downloaded cocoa v0.26.1
[INFO] [stderr]   Downloaded global-hotkey v0.7.0
[INFO] [stderr]   Downloaded dioxus-fullstack v0.7.1
[INFO] [stderr]   Downloaded webkit2gtk v2.0.1
[INFO] [stderr]   Downloaded dioxus-core v0.7.1
[INFO] [stderr]   Downloaded feed-rs v2.3.1
[INFO] [stderr]   Downloaded rusqlite v0.33.0
[INFO] [stderr]   Downloaded objc2-web-kit v0.3.2
[INFO] [stderr]   Downloaded tungstenite v0.27.0
[INFO] [stderr]   Downloaded wry v0.53.5
[INFO] [stderr]   Downloaded dioxus v0.7.1
[INFO] [stderr]   Downloaded dioxus-html v0.7.1
[INFO] [stderr]   Downloaded const_format v0.2.35
[INFO] [stderr]   Downloaded tao v0.34.5
[INFO] [stderr]   Downloaded tray-icon v0.21.2
[INFO] [stderr]   Downloaded cssparser v0.29.6
[INFO] [stderr]   Downloaded dioxus-server v0.7.1
[INFO] [stderr]   Downloaded mediatype v0.19.20
[INFO] [stderr]   Downloaded selectors v0.24.0
[INFO] [stderr]   Downloaded dioxus-desktop v0.7.1
[INFO] [stderr]   Downloaded soup3 v0.5.0
[INFO] [stderr]   Downloaded webkit2gtk-sys v2.0.1
[INFO] [stderr]   Downloaded webview2-com v0.38.0
[INFO] [stderr]   Downloaded async-tungstenite v0.31.0
[INFO] [stderr]   Downloaded const-str v0.7.0
[INFO] [stderr]   Downloaded dioxus-router-macro v0.7.1
[INFO] [stderr]   Downloaded dioxus-router v0.7.1
[INFO] [stderr]   Downloaded serde_qs v0.15.0
[INFO] [stderr]   Downloaded askama_escape v0.13.0
[INFO] [stderr]   Downloaded dioxus-stores v0.7.1
[INFO] [stderr]   Downloaded dioxus-document v0.7.1
[INFO] [stderr]   Downloaded dioxus-rsx v0.7.1
[INFO] [stderr]   Downloaded dioxus-interpreter-js v0.7.1
[INFO] [stderr]   Downloaded dioxus-signals v0.7.1
[INFO] [stderr]   Downloaded generational-box v0.7.1
[INFO] [stderr]   Downloaded dioxus-web v0.7.1
[INFO] [stderr]   Downloaded html5ever v0.29.1
[INFO] [stderr]   Downloaded servo_arc v0.2.0
[INFO] [stderr]   Downloaded kuchikiki v0.8.8-speedreader
[INFO] [stderr]   Downloaded tao-macros v0.1.3
[INFO] [stderr]   Downloaded javascriptcore-rs v1.1.2
[INFO] [stderr]   Downloaded javascriptcore-rs-sys v1.1.1
[INFO] [stderr]   Downloaded soup3-sys v0.5.0
[INFO] [stderr]   Downloaded infer v0.19.0
[INFO] [stderr]   Downloaded dioxus-liveview v0.7.1
[INFO] [stderr]   Downloaded dioxus-fullstack-core v0.7.1
[INFO] [stderr]   Downloaded dioxus-core-macro v0.7.1
[INFO] [stderr]   Downloaded dioxus-hooks v0.7.1
[INFO] [stderr]   Downloaded sledgehammer_bindgen_macro v0.6.1
[INFO] [stderr]   Downloaded dioxus-cli-config v0.7.1
[INFO] [stderr]   Downloaded subsecond v0.7.1
[INFO] [stderr]   Downloaded cocoa-foundation v0.2.1
[INFO] [stderr]   Downloaded dlopen2_derive v0.4.2
[INFO] [stderr]   Downloaded dioxus-asset-resolver v0.7.1
[INFO] [stderr]   Downloaded dioxus-logger v0.7.1
[INFO] [stderr]   Downloaded const-serialize-macro v0.7.1
[INFO] [stderr]   Downloaded const-serialize v0.7.1
[INFO] [stderr]   Downloaded manganis v0.7.1
[INFO] [stderr]   Downloaded memfd v0.6.5
[INFO] [stderr]   Downloaded gdkwayland-sys v0.18.2
[INFO] [stderr]   Downloaded content_disposition v0.4.0
[INFO] [stderr]   Downloaded dioxus-fullstack-macro v0.7.1
[INFO] [stderr]   Downloaded dioxus-stores-macro v0.7.1
[INFO] [stderr]   Downloaded lazy-js-bundle v0.7.1
[INFO] [stderr]   Downloaded manganis-macro v0.7.1
[INFO] [stderr]   Downloaded cssparser v0.34.0
[INFO] [stderr]   Downloaded selectors v0.26.0
[INFO] [stderr]   Downloaded dioxus-ssr v0.7.1
[INFO] [stderr]   Downloaded dioxus-devtools v0.7.1
[INFO] [stderr]   Downloaded dioxus-history v0.7.1
[INFO] [stderr]   Downloaded dioxus-core-types v0.7.1
[INFO] [stderr]   Downloaded manganis-core v0.7.1
[INFO] [stderr]   Downloaded markup5ever v0.14.1
[INFO] [stderr]   Downloaded webview2-com-sys v0.38.0
[INFO] [stderr]   Downloaded libsqlite3-sys v0.31.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c0bbb06f873a746532de691e4b3347af2425a69a4f34321c97e5a8922ce36abb
[INFO] running `Command { std: "docker" "start" "-a" "c0bbb06f873a746532de691e4b3347af2425a69a4f34321c97e5a8922ce36abb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0bbb06f873a746532de691e4b3347af2425a69a4f34321c97e5a8922ce36abb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c0bbb06f873a746532de691e4b3347af2425a69a4f34321c97e5a8922ce36abb", kill_on_drop: false }`
[INFO] [stdout] c0bbb06f873a746532de691e4b3347af2425a69a4f34321c97e5a8922ce36abb
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bc7b048b88ba2605c6c7967fa73ae0c602af9af87a175edd118c8fc447e47bd5
[INFO] running `Command { std: "docker" "start" "-a" "bc7b048b88ba2605c6c7967fa73ae0c602af9af87a175edd118c8fc447e47bd5", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking dioxus-core-types v0.7.1
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.106
[INFO] [stderr]     Checking longest-increasing-subsequence v0.1.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling wasm-bindgen v0.2.106
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking dioxus-cli-config v0.7.1
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]     Checking keyboard-types v0.7.0
[INFO] [stderr]    Compiling lazy-js-bundle v0.7.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking webpki-roots v1.0.4
[INFO] [stderr]     Checking charset v0.1.5
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling dioxus-document v0.7.1
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]     Checking inventory v0.3.21
[INFO] [stderr]     Checking matchit v0.8.4
[INFO] [stderr]    Compiling base16 v0.2.1
[INFO] [stderr]     Checking content_disposition v0.4.0
[INFO] [stderr]     Checking send_wrapper v0.6.0
[INFO] [stderr]     Checking const-str v0.7.0
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]     Checking dioxus-config-macros v0.7.1
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling const_format_proc_macros v0.2.34
[INFO] [stderr]    Compiling dioxus-config-macro v0.7.1
[INFO] [stderr]     Checking euclid v0.22.11
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking const_format v0.2.35
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking cookie v0.18.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.106
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling macro-string v0.1.4
[INFO] [stderr]    Compiling dioxus-rsx v0.7.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling warnings-macro v0.2.0
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling const-serialize-macro v0.7.1
[INFO] [stderr]    Compiling dioxus-html-internal-macro v0.7.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling dioxus-core-macro v0.7.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking zerocopy v0.8.31
[INFO] [stderr]    Compiling dioxus-fullstack-macro v0.7.1
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]    Compiling dioxus-stores-macro v0.7.1
[INFO] [stderr]    Compiling dioxus-router-macro v0.7.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking generational-box v0.7.1
[INFO] [stderr]     Checking warnings v0.2.1
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.106
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling enumset_derive v0.14.0
[INFO] [stderr]     Checking dioxus-logger v0.7.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]    Compiling const-serialize v0.7.1
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking subsecond-types v0.7.1
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_qs v0.15.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling manganis-core v0.7.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking subsecond v0.7.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking cfb v0.7.3
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling manganis-macro v0.7.1
[INFO] [stderr]     Checking js-sys v0.3.83
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking dioxus-core v0.7.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking manganis v0.7.1
[INFO] [stderr]     Checking infer v0.19.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking publicsuffix v2.3.0
[INFO] [stderr]     Checking enumset v1.1.10
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking tungstenite v0.27.0
[INFO] [stderr]     Checking multer v3.1.0
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking cookie_store v0.21.1
[INFO] [stderr]     Checking axum-core v0.5.5
[INFO] [stderr]     Checking async-tungstenite v0.31.0
[INFO] [stderr]     Checking dioxus-signals v0.7.1
[INFO] [stderr]     Checking dioxus-history v0.7.1
[INFO] [stderr]     Checking dioxus-devtools-types v0.7.1
[INFO] [stderr]     Checking dioxus-hooks v0.7.1
[INFO] [stderr]     Checking dioxus-devtools v0.7.1
[INFO] [stderr]     Checking dioxus-stores v0.7.1
[INFO] [stderr]     Checking dioxus-html v0.7.1
[INFO] [stderr]     Checking web-sys v0.3.83
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.56
[INFO] [stderr]     Checking dioxus-router v0.7.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking dioxus-asset-resolver v0.7.1
[INFO] [stderr]     Checking dioxus-fullstack-core v0.7.1
[INFO] [stderr]     Checking tower-http v0.6.7
[INFO] [stderr]     Checking axum v0.8.7
[INFO] [stderr]     Checking hyper-util v0.1.18
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking reqwest v0.12.24
[INFO] [stderr]     Checking gloo-utils v0.2.0
[INFO] [stderr]     Checking wasm-streams v0.4.2
[INFO] [stderr]     Checking gloo-net v0.6.0
[INFO] [stderr]     Checking dioxus-fullstack v0.7.1
[INFO] [stderr]     Checking dioxus v0.7.1
[INFO] [stderr]     Checking spillway v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Stats`
[INFO] [stdout]   --> src/components/sidebar.rs:11:56
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::{FilterMode, Folder, FeedWithCount, Stats, ReadStatusOverride};
[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 imports: `EntityType`, `SyncOperation`, and `VectorClock`
[INFO] [stdout]  --> src/hooks/sync.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::sync::{EntityType, EventBuilder, SyncOperation, SyncState, VectorClock};
[INFO] [stdout]   |                   ^^^^^^^^^^                ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalSyncState`
[INFO] [stdout]   --> src/sync/engine.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{EntityType, LocalSyncState, OutboxEntry, SyncEvent, SyncOperation, VectorClock};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/sync/merge.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EntityType`
[INFO] [stdout]  --> src/sync/merge.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::{EntityType, SyncEvent, SyncOperation, VectorClock};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Stats`
[INFO] [stdout]   --> src/components/sidebar.rs:11:56
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::{FilterMode, Folder, FeedWithCount, Stats, ReadStatusOverride};
[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 imports: `EntityType`, `SyncOperation`, and `VectorClock`
[INFO] [stdout]  --> src/hooks/sync.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::sync::{EntityType, EventBuilder, SyncOperation, SyncState, VectorClock};
[INFO] [stdout]   |                   ^^^^^^^^^^                ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalSyncState`
[INFO] [stdout]   --> src/sync/engine.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{EntityType, LocalSyncState, OutboxEntry, SyncEvent, SyncOperation, VectorClock};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/sync/merge.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/sync/merge.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |         event: &SyncEvent,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/sync/merge.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |         event: &SyncEvent,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_apply_event` is never used
[INFO] [stdout]    --> src/sync/client.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn should_apply_event(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `device_id` is never read
[INFO] [stdout]    --> src/sync/engine.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ChangeRecorder {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 235 |     device_id: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverResponse` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FeverResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `authenticated` and `unauthenticated` are never used
[INFO] [stdout]   --> src/server/fever.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl FeverResponse {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 44 |     /// Create a new authenticated response
[INFO] [stdout] 45 |     pub fn authenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn unauthenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct FeverGroup {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeed` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct FeverFeed {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeedsGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct FeverFeedsGroup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverItem` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct FeverItem {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverRequest` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct FeverRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `device_id` is never read
[INFO] [stdout]    --> src/sync/engine.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ChangeRecorder {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 235 |     device_id: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverResponse` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FeverResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `authenticated` and `unauthenticated` are never used
[INFO] [stdout]   --> src/server/fever.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl FeverResponse {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 44 |     /// Create a new authenticated response
[INFO] [stdout] 45 |     pub fn authenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn unauthenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct FeverGroup {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeed` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct FeverFeed {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeedsGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct FeverFeedsGroup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverItem` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct FeverItem {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverRequest` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct FeverRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dioxus::prelude::*`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use dioxus::prelude::*;
[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: `Stats`
[INFO] [stdout]   --> src/components/sidebar.rs:11:56
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::{FilterMode, Folder, FeedWithCount, Stats, ReadStatusOverride};
[INFO] [stdout]    |                                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthForm`, `LoginButton`, and `UserMenu`
[INFO] [stdout]   --> src/components/mod.rs:13:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use auth::{AuthForm, LoginButton, UserMenu};
[INFO] [stdout]    |                ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EntityType`, `SyncOperation`, and `VectorClock`
[INFO] [stdout]  --> src/hooks/sync.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::sync::{EntityType, EventBuilder, SyncOperation, SyncState, VectorClock};
[INFO] [stdout]   |                   ^^^^^^^^^^                ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncContext` and `SyncStatus`
[INFO] [stdout]  --> src/hooks/mod.rs:5:38
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sync::{use_sync, SyncButton, SyncContext, SyncStatus, SyncStatusIndicator};
[INFO] [stdout]   |                                      ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToggleStarRequest`
[INFO] [stdout]   --> src/models/mod.rs:10:60
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use article::{Article, ArticleFilter, MarkReadRequest, ToggleStarRequest, ReadStatusOverride};
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Session`
[INFO] [stdout]   --> src/models/mod.rs:11:75
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use user::{User, Device, LoginRequest, RegisterRequest, AuthResponse, Session};
[INFO] [stdout]    |                                                                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalSyncState`
[INFO] [stdout]   --> src/sync/engine.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{EntityType, LocalSyncState, OutboxEntry, SyncEvent, SyncOperation, VectorClock};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/sync/merge.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EntityType`
[INFO] [stdout]  --> src/sync/merge.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::{EntityType, SyncEvent, SyncOperation, VectorClock};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ApplyResult`
[INFO] [stdout]   --> src/sync/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use client::{ApplyResult, EventBuilder, SyncState};
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GSet`, `LWWRegister`, and `TwoPhaseSet`
[INFO] [stdout]   --> src/sync/mod.rs:18:16
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use crdt::{GSet, LWWRegister, TwoPhaseSet};
[INFO] [stdout]    |                ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChangeRecorder`, `InitialSyncChoice`, `InitialSyncPhase`, `InitialSyncProgress`, `SyncEngineConfig`, `SyncEngine`, `SyncError`, `SyncResult`, `SyncSchedulerConfig`, `SyncScheduler`, and `SyncStatus`
[INFO] [stdout]   --> src/sync/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ChangeRecorder, InitialSyncChoice, InitialSyncPhase, InitialSyncProgress,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     SyncEngine, SyncEngineConfig, SyncError, SyncResult, SyncScheduler, SyncSchedulerConfig,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     SyncStatus,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ApplyAction`, `ApplyContext`, `ArticlePayload`, `BatchProcessor`, `ConflictStrategy`, `EventMerger`, `FeedPayload`, `FolderPayload`, `LocalEntityState`, and `PayloadExtractor`
[INFO] [stdout]   --> src/sync/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     ApplyAction, ApplyContext, ArticlePayload, BatchProcessor, ConflictStrategy,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     EventMerger, FeedPayload, FolderPayload, LocalEntityState, PayloadExtractor,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncRequest` and `SyncResponse`
[INFO] [stdout]   --> src/sync/mod.rs:28:58
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use protocol::{EntityType, SyncEvent, SyncOperation, SyncRequest, SyncResponse};
[INFO] [stdout]    |                                                          ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BatchResolver`, `ConflictResolver`, `MergedState`, and `Resolution`
[INFO] [stdout]   --> src/sync/mod.rs:29:20
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use resolver::{BatchResolver, ConflictResolver, MergedState, Resolution};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Tombstone`
[INFO] [stdout]   --> src/sync/mod.rs:30:46
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use state::{LocalSyncState, OutboxEntry, Tombstone};
[INFO] [stdout]    |                                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClockOrdering`
[INFO] [stdout]   --> src/sync/mod.rs:31:24
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use vector_clock::{ClockOrdering, VectorClock};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dioxus::prelude::*`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use dioxus::prelude::*;
[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: `Stats`
[INFO] [stdout]   --> src/components/sidebar.rs:11:56
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::{FilterMode, Folder, FeedWithCount, Stats, ReadStatusOverride};
[INFO] [stdout]    |                                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthForm`, `LoginButton`, and `UserMenu`
[INFO] [stdout]   --> src/components/mod.rs:13:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use auth::{AuthForm, LoginButton, UserMenu};
[INFO] [stdout]    |                ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EntityType`, `SyncOperation`, and `VectorClock`
[INFO] [stdout]  --> src/hooks/sync.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::sync::{EntityType, EventBuilder, SyncOperation, SyncState, VectorClock};
[INFO] [stdout]   |                   ^^^^^^^^^^                ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncContext` and `SyncStatus`
[INFO] [stdout]  --> src/hooks/mod.rs:5:38
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sync::{use_sync, SyncButton, SyncContext, SyncStatus, SyncStatusIndicator};
[INFO] [stdout]   |                                      ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToggleStarRequest`
[INFO] [stdout]   --> src/models/mod.rs:10:60
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use article::{Article, ArticleFilter, MarkReadRequest, ToggleStarRequest, ReadStatusOverride};
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Session`
[INFO] [stdout]   --> src/models/mod.rs:11:75
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use user::{User, Device, LoginRequest, RegisterRequest, AuthResponse, Session};
[INFO] [stdout]    |                                                                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalSyncState`
[INFO] [stdout]   --> src/sync/engine.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::{EntityType, LocalSyncState, OutboxEntry, SyncEvent, SyncOperation, VectorClock};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/sync/merge.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ApplyResult`
[INFO] [stdout]   --> src/sync/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use client::{ApplyResult, EventBuilder, SyncState};
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GSet`, `LWWRegister`, and `TwoPhaseSet`
[INFO] [stdout]   --> src/sync/mod.rs:18:16
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use crdt::{GSet, LWWRegister, TwoPhaseSet};
[INFO] [stdout]    |                ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChangeRecorder`, `InitialSyncChoice`, `InitialSyncPhase`, `InitialSyncProgress`, `SyncEngineConfig`, `SyncEngine`, `SyncError`, `SyncResult`, `SyncSchedulerConfig`, `SyncScheduler`, and `SyncStatus`
[INFO] [stdout]   --> src/sync/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ChangeRecorder, InitialSyncChoice, InitialSyncPhase, InitialSyncProgress,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     SyncEngine, SyncEngineConfig, SyncError, SyncResult, SyncScheduler, SyncSchedulerConfig,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     SyncStatus,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ApplyAction`, `ApplyContext`, `ArticlePayload`, `BatchProcessor`, `ConflictStrategy`, `EventMerger`, `FeedPayload`, `FolderPayload`, `LocalEntityState`, and `PayloadExtractor`
[INFO] [stdout]   --> src/sync/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     ApplyAction, ApplyContext, ArticlePayload, BatchProcessor, ConflictStrategy,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     EventMerger, FeedPayload, FolderPayload, LocalEntityState, PayloadExtractor,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncRequest` and `SyncResponse`
[INFO] [stdout]   --> src/sync/mod.rs:28:58
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use protocol::{EntityType, SyncEvent, SyncOperation, SyncRequest, SyncResponse};
[INFO] [stdout]    |                                                          ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BatchResolver`, `ConflictResolver`, `MergedState`, and `Resolution`
[INFO] [stdout]   --> src/sync/mod.rs:29:20
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use resolver::{BatchResolver, ConflictResolver, MergedState, Resolution};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Tombstone`
[INFO] [stdout]   --> src/sync/mod.rs:30:46
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use state::{LocalSyncState, OutboxEntry, Tombstone};
[INFO] [stdout]    |                                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClockOrdering`
[INFO] [stdout]   --> src/sync/mod.rs:31:24
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use vector_clock::{ClockOrdering, VectorClock};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/sync/merge.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |         event: &SyncEvent,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthMode` is never used
[INFO] [stdout]   --> src/components/auth.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum AuthMode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Syncing`, `Success`, `Error`, and `Offline` are never constructed
[INFO] [stdout]   --> src/hooks/sync.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum SyncStatus {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 13 |     Syncing {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Success {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Error {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Offline,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `syncing`, `success`, `error`, `is_error`, and `last_sync_time` are never used
[INFO] [stdout]   --> src/hooks/sync.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl SyncStatus {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 27 |     /// Create a syncing status
[INFO] [stdout] 28 |     pub fn syncing(phase: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn success() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn error(message: impl Into<String>, can_retry: bool) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn is_error(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn last_sync_time(&self) -> Option<DateTime<Utc>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_builder` is never read
[INFO] [stdout]   --> src/hooks/sync.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct SyncContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     event_builder: EventBuilder,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/hooks/sync.rs:87:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl SyncContext {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout]  86 |     /// Get the current device ID
[INFO] [stdout]  87 |     pub fn device_id(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn has_pending(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn on_folder_created(&mut self, id: i64, name: &str, position: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn on_folder_updated(&mut self, id: i64, name: Option<&str>, position: Option<i32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn on_folder_deleted(&mut self, id: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn on_feed_created(&mut self, id: i64, url: &str, title: &str, folder_id: Option<i64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn on_feed_updated(&mut self, id: i64, title: Option<&str>, folder_id: Option<i64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn on_feed_deleted(&mut self, id: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn on_article_read(&mut self, id: i64, is_read: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn on_article_starred(&mut self, id: i64, is_starred: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn set_online(&mut self, online: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/models/folder.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Folder {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 24 |     /// Create a new folder
[INFO] [stdout] 25 |     pub fn new(id: i64, name: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_sync_id(id: i64, name: String, sync_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateFolderRequest` is never constructed
[INFO] [stdout]   --> src/models/folder.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct CreateFolderRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateFolderRequest` is never constructed
[INFO] [stdout]   --> src/models/folder.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct UpdateFolderRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/models/feed.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl Feed {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] 36 |     /// Create a new feed
[INFO] [stdout] 37 |     pub fn new(id: i64, title: String, url: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn with_sync_id(id: i64, title: String, url: String, sync_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateFeedRequest` is never constructed
[INFO] [stdout]   --> src/models/feed.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct UpdateFeedRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/models/article.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Article {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 40 |     /// Create a new article
[INFO] [stdout] 41 |     pub fn new(id: i64, feed_id: i64, guid: String, title: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn with_sync_id(id: i64, feed_id: i64, guid: String, title: String, sync_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToggleStarRequest` is never constructed
[INFO] [stdout]    --> src/models/article.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub struct ToggleStarRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]  --> src/models/user.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct User {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Device` is never constructed
[INFO] [stdout]   --> src/models/user.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct Device {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct LoginRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct RegisterRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Session` is never constructed
[INFO] [stdout]   --> src/models/user.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct Session {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncPullResponse` is never constructed
[INFO] [stdout]    --> src/server/api.rs:475:12
[INFO] [stdout]     |
[INFO] [stdout] 475 | pub struct SyncPullResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverResponse` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FeverResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `authenticated` and `unauthenticated` are never used
[INFO] [stdout]   --> src/server/fever.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl FeverResponse {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 44 |     /// Create a new authenticated response
[INFO] [stdout] 45 |     pub fn authenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn unauthenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct FeverGroup {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeed` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct FeverFeed {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeedsGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct FeverFeedsGroup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverItem` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct FeverItem {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverRequest` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct FeverRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_event`, `take_pending_events`, `has_pending_events`, `merge_server_events`, `mark_sync_complete`, and `set_online` are never used
[INFO] [stdout]   --> src/sync/client.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SyncState {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn create_event(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn take_pending_events(&mut self) -> Vec<SyncEvent> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn has_pending_events(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn merge_server_events(&mut self, _events: &[SyncEvent], server_clock: &VectorClock) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn mark_sync_complete(&mut self, server_clock: &VectorClock) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn set_online(&mut self, online: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `device_id` is never read
[INFO] [stdout]    --> src/sync/client.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct EventBuilder {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 101 |     device_id: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EventBuilder` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/sync/client.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl EventBuilder {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn folder_created(&self, id: i64, name: &str, position: i32, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn folder_updated(&self, id: i64, name: Option<&str>, position: Option<i32>, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn folder_deleted(&self, id: i64, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn feed_created(&self, id: i64, url: &str, title: &str, folder_id: Option<i64>, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn feed_updated(&self, id: i64, title: Option<&str>, folder_id: Option<i64>, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn feed_deleted(&self, id: i64, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn article_read(&self, id: i64, is_read: bool, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn article_starred(&self, id: i64, is_starred: bool, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ApplyResult` is never used
[INFO] [stdout]    --> src/sync/client.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum ApplyResult {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_apply_event` is never used
[INFO] [stdout]    --> src/sync/client.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn should_apply_event(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GSet` is never constructed
[INFO] [stdout]   --> src/sync/crdt.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct GSet<T: Eq + Hash + Clone> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/sync/crdt.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<T: Eq + Hash + Clone> GSet<T> {
[INFO] [stdout]    | ---------------------------------- associated items in this implementation
[INFO] [stdout] 22 |     /// Create a new empty G-Set
[INFO] [stdout] 23 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn insert(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn contains(&self, value: &T) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn merge(&mut self, other: &GSet<T>) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn iter(&self) -> impl Iterator<Item = &T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn to_vec(&self) -> Vec<T> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LWWRegister` is never constructed
[INFO] [stdout]   --> src/sync/crdt.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct LWWRegister<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/crdt.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl<T: Clone> LWWRegister<T> {
[INFO] [stdout]     | ----------------------------- associated items in this implementation
[INFO] [stdout]  90 |     /// Create a new LWW-Register with an initial value
[INFO] [stdout]  91 |     pub fn new(value: T, device_id: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn with_timestamp(value: T, timestamp: DateTime<Utc>, device_id: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn value(&self) -> &T {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn timestamp(&self) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn device_id(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn set(&mut self, value: T, device_id: &str) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn merge(&mut self, other: &LWWRegister<T>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TwoPhaseSet` is never constructed
[INFO] [stdout]    --> src/sync/crdt.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub struct TwoPhaseSet<T: Eq + Hash + Clone> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/crdt.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | impl<T: Eq + Hash + Clone> TwoPhaseSet<T> {
[INFO] [stdout]     | ----------------------------------------- associated items in this implementation
[INFO] [stdout] 164 |     /// Create a new empty 2P-Set
[INFO] [stdout] 165 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn insert(&mut self, value: T) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn remove(&mut self, value: T) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn contains(&self, value: &T) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn merge(&mut self, other: &TwoPhaseSet<T>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn iter(&self) -> impl Iterator<Item = &T> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn to_vec(&self) -> Vec<T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncEngineConfig` is never constructed
[INFO] [stdout]   --> src/sync/engine.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct SyncEngineConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SyncResult` is never used
[INFO] [stdout]   --> src/sync/engine.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum SyncResult {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SyncError` is never used
[INFO] [stdout]   --> src/sync/engine.rs:68:10
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub enum SyncError {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncEngine` is never constructed
[INFO] [stdout]   --> src/sync/engine.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct SyncEngine {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/engine.rs:99:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl SyncEngine {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  98 |     /// Create a new sync engine
[INFO] [stdout]  99 |     pub fn new(device_id: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn with_config(device_id: String, config: SyncEngineConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_token(&mut self, token: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn is_authenticated(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn set_online(&mut self, online: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn is_online(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn device_id(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn last_sync(&self) -> Option<DateTime<Utc>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn last_error(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn record_change(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn outbox_to_events(&self, entries: &[OutboxEntry]) -> Vec<SyncEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn calculate_backoff(&self, attempt: u32) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn mark_sync_complete(&mut self, server_clock: Option<&VectorClock>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn mark_sync_failed(&mut self, error: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn token(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn batch_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn max_retries(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangeRecorder` is never constructed
[INFO] [stdout]    --> src/sync/engine.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ChangeRecorder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/engine.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl ChangeRecorder {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 239 |     pub fn new(device_id: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn folder_created(&self, id: i64, sync_id: String, name: &str, position: i32, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn folder_updated(&self, id: i64, sync_id: Option<String>, name: Option<&str>, position: Option<i32>, clock: VectorClock) -...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn folder_deleted(&self, id: i64, sync_id: String, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn feed_created(&self, id: i64, sync_id: String, url: &str, title: &str, folder_id: Option<i64>, clock: VectorClock) -> Out...
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn feed_updated(&self, id: i64, sync_id: Option<String>, title: Option<&str>, folder_id: Option<i64>, clock: VectorClock) -...
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn feed_deleted(&self, id: i64, sync_id: String, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn article_read(&self, id: i64, sync_id: Option<String>, is_read: bool, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn article_starred(&self, id: i64, sync_id: Option<String>, is_starred: bool, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SyncStatus` is never used
[INFO] [stdout]    --> src/sync/engine.rs:373:10
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub enum SyncStatus {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `syncing`, `syncing_with_progress`, `error`, and `is_syncing` are never used
[INFO] [stdout]    --> src/sync/engine.rs:411:12
[INFO] [stdout]     |
[INFO] [stdout] 409 | impl SyncStatus {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 410 |     /// Create a syncing status with phase description
[INFO] [stdout] 411 |     pub fn syncing(phase: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn syncing_with_progress(phase: impl Into<String>, progress: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 427 |     pub fn error(message: impl Into<String>, can_retry: bool) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_syncing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncSchedulerConfig` is never constructed
[INFO] [stdout]    --> src/sync/engine.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub struct SyncSchedulerConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncScheduler` is never constructed
[INFO] [stdout]    --> src/sync/engine.rs:462:12
[INFO] [stdout]     |
[INFO] [stdout] 462 | pub struct SyncScheduler {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/engine.rs:469:12
[INFO] [stdout]     |
[INFO] [stdout] 468 | impl SyncScheduler {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 469 |     pub fn new(config: SyncSchedulerConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn enable(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn disable(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub fn record_sync(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     pub fn sync_interval(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     pub fn should_sync(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn can_sync(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 529 |     pub fn time_until_next_sync(&self) -> Option<Duration> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn sync_on_foreground(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InitialSyncChoice` is never used
[INFO] [stdout]    --> src/sync/engine.rs:556:10
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub enum InitialSyncChoice {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InitialSyncProgress` is never constructed
[INFO] [stdout]    --> src/sync/engine.rs:567:12
[INFO] [stdout]     |
[INFO] [stdout] 567 | pub struct InitialSyncProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `percentage` are never used
[INFO] [stdout]    --> src/sync/engine.rs:579:12
[INFO] [stdout]     |
[INFO] [stdout] 578 | impl InitialSyncProgress {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 579 |     pub fn new(phase: InitialSyncPhase) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 589 |     pub fn percentage(&self) -> Option<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InitialSyncPhase` is never used
[INFO] [stdout]    --> src/sync/engine.rs:602:10
[INFO] [stdout]     |
[INFO] [stdout] 602 | pub enum InitialSyncPhase {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]    --> src/sync/engine.rs:627:12
[INFO] [stdout]     |
[INFO] [stdout] 625 | impl InitialSyncPhase {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 626 |     /// Get human-readable description of this phase
[INFO] [stdout] 627 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ApplyAction` is never used
[INFO] [stdout]   --> src/sync/merge.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum ApplyAction {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConflictStrategy` is never used
[INFO] [stdout]   --> src/sync/merge.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum ConflictStrategy {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApplyContext` is never constructed
[INFO] [stdout]   --> src/sync/merge.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct ApplyContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_strategy` are never used
[INFO] [stdout]   --> src/sync/merge.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl ApplyContext {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 50 |     pub fn new(local_device_id: String, local_clock: VectorClock) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn with_strategy(mut self, strategy: ConflictStrategy) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocalEntityState` is never constructed
[INFO] [stdout]   --> src/sync/merge.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct LocalEntityState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventMerger` is never constructed
[INFO] [stdout]   --> src/sync/merge.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct EventMerger {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `determine_action`, `handle_create`, `handle_update`, `handle_delete`, and `resolve_conflict` are never used
[INFO] [stdout]    --> src/sync/merge.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl EventMerger {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  83 |     pub fn new(context: ApplyContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn determine_action(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn handle_create(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn handle_update(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     fn handle_delete(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn resolve_conflict(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PayloadExtractor` is never constructed
[INFO] [stdout]    --> src/sync/merge.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct PayloadExtractor;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_folder`, `extract_feed`, and `extract_article` are never used
[INFO] [stdout]    --> src/sync/merge.rs:200:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl PayloadExtractor {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 199 |     /// Extract folder data from event payload
[INFO] [stdout] 200 |     pub fn extract_folder(payload: &serde_json::Value) -> FolderPayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn extract_feed(payload: &serde_json::Value) -> FeedPayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn extract_article(payload: &serde_json::Value) -> ArticlePayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FolderPayload` is never constructed
[INFO] [stdout]    --> src/sync/merge.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub struct FolderPayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeedPayload` is never constructed
[INFO] [stdout]    --> src/sync/merge.rs:242:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub struct FeedPayload {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticlePayload` is never constructed
[INFO] [stdout]    --> src/sync/merge.rs:251:12
[INFO] [stdout]     |
[INFO] [stdout] 251 | pub struct ArticlePayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BatchProcessor` is never constructed
[INFO] [stdout]    --> src/sync/merge.rs:264:12
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct BatchProcessor {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_batch`, `update_clock`, and `local_clock` are never used
[INFO] [stdout]    --> src/sync/merge.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl BatchProcessor {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 270 |     pub fn new(context: ApplyContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn process_batch<'a, F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn update_clock(&mut self, server_clock: &VectorClock) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn local_clock(&self) -> &VectorClock {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/sync/protocol.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl SyncEvent {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 50 |     /// Create a new sync event
[INFO] [stdout] 51 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn with_sync_id(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncRequest` is never constructed
[INFO] [stdout]   --> src/sync/protocol.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct SyncRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncResponse` is never constructed
[INFO] [stdout]    --> src/sync/protocol.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct SyncResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Resolution` is never used
[INFO] [stdout]   --> src/sync/resolver.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum Resolution {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MergedState` is never constructed
[INFO] [stdout]   --> src/sync/resolver.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct MergedState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConflictResolver` is never constructed
[INFO] [stdout]   --> src/sync/resolver.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct ConflictResolver {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/resolver.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl ConflictResolver {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  43 |     pub fn new(device_id: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn resolve(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     fn resolve_with_deleted_local(&self, incoming: &SyncEvent) -> Resolution {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn resolve_update(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn resolve_by_timestamp(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn tiebreak_by_device_id(&self, incoming_device_id: &str) -> Resolution {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn merge_article_updates(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BatchResolver` is never constructed
[INFO] [stdout]    --> src/sync/resolver.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub struct BatchResolver {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_batch`, and `filter_applicable` are never used
[INFO] [stdout]    --> src/sync/resolver.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | impl BatchResolver {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 218 |     pub fn new(device_id: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn process_batch<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn filter_applicable<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocalSyncState` is never constructed
[INFO] [stdout]   --> src/sync/state.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct LocalSyncState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/sync/state.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl LocalSyncState {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 33 |     /// Create a new local sync state with a generated device ID
[INFO] [stdout] 34 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn with_device_id(device_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn set_authenticated(&mut self, user_id: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn clear_authentication(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn merge_clock(&mut self, other: &VectorClock) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn increment_clock(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn mark_sync_complete(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn is_sync_enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OutboxEntry` is never constructed
[INFO] [stdout]    --> src/sync/state.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `record_failure` are never used
[INFO] [stdout]    --> src/sync/state.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl OutboxEntry {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 135 |     /// Create a new outbox entry
[INFO] [stdout] 136 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn record_failure(&mut self, error: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tombstone` is never constructed
[INFO] [stdout]    --> src/sync/state.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct Tombstone {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/sync/state.rs:187:12
[INFO] [stdout]     |
[INFO] [stdout] 185 | impl Tombstone {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 186 |     /// Create a new tombstone
[INFO] [stdout] 187 |     pub fn new(entity_type: EntityType, entity_id: i64, entity_sync_id: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `increment`, `get`, `merge`, `compare`, and `has_seen` are never used
[INFO] [stdout]   --> src/sync/vector_clock.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl VectorClock {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn increment(&mut self, device_id: &str) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get(&self, device_id: &str) -> u64 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn merge(&mut self, other: &VectorClock) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn compare(&self, other: &VectorClock) -> ClockOrdering {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn has_seen(&self, other: &VectorClock) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ClockOrdering` is never used
[INFO] [stdout]   --> src/sync/vector_clock.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum ClockOrdering {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/sync/merge.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |         event: &SyncEvent,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthMode` is never used
[INFO] [stdout]   --> src/components/auth.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum AuthMode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Syncing`, `Success`, `Error`, and `Offline` are never constructed
[INFO] [stdout]   --> src/hooks/sync.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum SyncStatus {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 13 |     Syncing {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Success {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Error {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Offline,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `syncing`, `success`, `error`, `is_error`, and `last_sync_time` are never used
[INFO] [stdout]   --> src/hooks/sync.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl SyncStatus {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 27 |     /// Create a syncing status
[INFO] [stdout] 28 |     pub fn syncing(phase: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn success() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn error(message: impl Into<String>, can_retry: bool) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn is_error(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn last_sync_time(&self) -> Option<DateTime<Utc>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_builder` is never read
[INFO] [stdout]   --> src/hooks/sync.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct SyncContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     event_builder: EventBuilder,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/hooks/sync.rs:87:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl SyncContext {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout]  86 |     /// Get the current device ID
[INFO] [stdout]  87 |     pub fn device_id(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn has_pending(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn on_folder_created(&mut self, id: i64, name: &str, position: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn on_folder_updated(&mut self, id: i64, name: Option<&str>, position: Option<i32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn on_folder_deleted(&mut self, id: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn on_feed_created(&mut self, id: i64, url: &str, title: &str, folder_id: Option<i64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn on_feed_updated(&mut self, id: i64, title: Option<&str>, folder_id: Option<i64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn on_feed_deleted(&mut self, id: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn on_article_read(&mut self, id: i64, is_read: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn on_article_starred(&mut self, id: i64, is_starred: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn set_online(&mut self, online: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/models/folder.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Folder {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 24 |     /// Create a new folder
[INFO] [stdout] 25 |     pub fn new(id: i64, name: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_sync_id(id: i64, name: String, sync_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateFolderRequest` is never constructed
[INFO] [stdout]   --> src/models/folder.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct CreateFolderRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateFolderRequest` is never constructed
[INFO] [stdout]   --> src/models/folder.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct UpdateFolderRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/models/feed.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl Feed {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] 36 |     /// Create a new feed
[INFO] [stdout] 37 |     pub fn new(id: i64, title: String, url: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn with_sync_id(id: i64, title: String, url: String, sync_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateFeedRequest` is never constructed
[INFO] [stdout]   --> src/models/feed.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct UpdateFeedRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_sync_id` are never used
[INFO] [stdout]   --> src/models/article.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Article {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 40 |     /// Create a new article
[INFO] [stdout] 41 |     pub fn new(id: i64, feed_id: i64, guid: String, title: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn with_sync_id(id: i64, feed_id: i64, guid: String, title: String, sync_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToggleStarRequest` is never constructed
[INFO] [stdout]    --> src/models/article.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub struct ToggleStarRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]  --> src/models/user.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct User {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Device` is never constructed
[INFO] [stdout]   --> src/models/user.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct Device {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct LoginRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct RegisterRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Session` is never constructed
[INFO] [stdout]   --> src/models/user.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct Session {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncPullResponse` is never constructed
[INFO] [stdout]    --> src/server/api.rs:475:12
[INFO] [stdout]     |
[INFO] [stdout] 475 | pub struct SyncPullResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverResponse` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FeverResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `authenticated` and `unauthenticated` are never used
[INFO] [stdout]   --> src/server/fever.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl FeverResponse {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 44 |     /// Create a new authenticated response
[INFO] [stdout] 45 |     pub fn authenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn unauthenticated() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct FeverGroup {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeed` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct FeverFeed {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverFeedsGroup` is never constructed
[INFO] [stdout]   --> src/server/fever.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct FeverFeedsGroup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverItem` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct FeverItem {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FeverRequest` is never constructed
[INFO] [stdout]    --> src/server/fever.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct FeverRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `merge_server_events`, `mark_sync_complete`, and `set_online` are never used
[INFO] [stdout]   --> src/sync/client.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SyncState {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn merge_server_events(&mut self, _events: &[SyncEvent], server_clock: &VectorClock) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn mark_sync_complete(&mut self, server_clock: &VectorClock) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn set_online(&mut self, online: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `folder_updated`, `folder_deleted`, `feed_created`, `feed_updated`, `feed_deleted`, and `article_starred` are never used
[INFO] [stdout]    --> src/sync/client.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl EventBuilder {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn folder_updated(&self, id: i64, name: Option<&str>, position: Option<i32>, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn folder_deleted(&self, id: i64, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn feed_created(&self, id: i64, url: &str, title: &str, folder_id: Option<i64>, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn feed_updated(&self, id: i64, title: Option<&str>, folder_id: Option<i64>, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn feed_deleted(&self, id: i64, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn article_starred(&self, id: i64, is_starred: bool, clock: VectorClock) -> SyncEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `local_timestamp` is never read
[INFO] [stdout]    --> src/sync/client.rs:243:16
[INFO] [stdout]     |
[INFO] [stdout] 243 |     Conflict { local_timestamp: DateTime<Utc> },
[INFO] [stdout]     |     --------   ^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ApplyResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotFound` is never constructed
[INFO] [stdout]    --> src/sync/client.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum ApplyResult {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 241 |     NotFound,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ApplyResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty`, `iter`, and `to_vec` are never used
[INFO] [stdout]   --> src/sync/crdt.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<T: Eq + Hash + Clone> GSet<T> {
[INFO] [stdout]    | ---------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn iter(&self) -> impl Iterator<Item = &T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn to_vec(&self) -> Vec<T> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `timestamp` is never used
[INFO] [stdout]    --> src/sync/crdt.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl<T: Clone> LWWRegister<T> {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn timestamp(&self) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty`, `iter`, and `to_vec` are never used
[INFO] [stdout]    --> src/sync/crdt.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | impl<T: Eq + Hash + Clone> TwoPhaseSet<T> {
[INFO] [stdout]     | ----------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn iter(&self) -> impl Iterator<Item = &T> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn to_vec(&self) -> Vec<T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_retries` and `batch_size` are never read
[INFO] [stdout]   --> src/sync/engine.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct SyncEngineConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 20 |     /// Maximum number of retry attempts for push operations
[INFO] [stdout] 21 |     pub max_retries: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub batch_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncEngineConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SyncResult` is never used
[INFO] [stdout]   --> src/sync/engine.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum SyncResult {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SyncError` is never used
[INFO] [stdout]   --> src/sync/engine.rs:68:10
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub enum SyncError {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_config`, `batch_size`, and `max_retries` are never used
[INFO] [stdout]    --> src/sync/engine.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl SyncEngine {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn with_config(device_id: String, config: SyncEngineConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn batch_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn max_retries(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `device_id` is never read
[INFO] [stdout]    --> src/sync/engine.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ChangeRecorder {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 235 |     device_id: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `folder_updated`, `folder_deleted`, `feed_created`, `feed_updated`, `feed_deleted`, and `article_starred` are never used
[INFO] [stdout]    --> src/sync/engine.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl ChangeRecorder {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn folder_updated(&self, id: i64, sync_id: Option<String>, name: Option<&str>, position: Option<i32>, clock: VectorClock) -...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn folder_deleted(&self, id: i64, sync_id: String, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn feed_created(&self, id: i64, sync_id: String, url: &str, title: &str, folder_id: Option<i64>, clock: VectorClock) -> Out...
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn feed_updated(&self, id: i64, sync_id: Option<String>, title: Option<&str>, folder_id: Option<i64>, clock: VectorClock) -...
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn feed_deleted(&self, id: i64, sync_id: String, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn article_starred(&self, id: i64, sync_id: Option<String>, is_starred: bool, clock: VectorClock) -> OutboxEntry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sync_on_foreground` is never read
[INFO] [stdout]    --> src/sync/engine.rs:446:9
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub struct SyncSchedulerConfig {
[INFO] [stdout]     |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 446 |     pub sync_on_foreground: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SyncSchedulerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `time_until_next_sync` and `sync_on_foreground` are never used
[INFO] [stdout]    --> src/sync/engine.rs:529:12
[INFO] [stdout]     |
[INFO] [stdout] 468 | impl SyncScheduler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 529 |     pub fn time_until_next_sync(&self) -> Option<Duration> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn sync_on_foreground(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InitialSyncChoice` is never used
[INFO] [stdout]    --> src/sync/engine.rs:556:10
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub enum InitialSyncChoice {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Conflict` is never constructed
[INFO] [stdout]   --> src/sync/merge.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum ApplyAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Conflict,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApplyAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `sync_id` are never read
[INFO] [stdout]   --> src/sync/merge.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct LocalEntityState {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 67 |     /// Local ID
[INFO] [stdout] 68 |     pub id: i64,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 69 |     /// Sync ID
[INFO] [stdout] 70 |     pub sync_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LocalEntityState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `site_url` is never read
[INFO] [stdout]    --> src/sync/merge.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub struct FeedPayload {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub site_url: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeedPayload` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/sync/merge.rs:254:9
[INFO] [stdout]     |
[INFO] [stdout] 251 | pub struct ArticlePayload {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub guid: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 255 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 256 |     pub url: Option<String>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 257 |     pub content: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 258 |     pub summary: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 259 |     pub author: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 260 |     pub feed_id: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ArticlePayload` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/sync/merge.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct BatchProcessor {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 265 |     context: ApplyContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_clock` and `local_clock` are never used
[INFO] [stdout]    --> src/sync/merge.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl BatchProcessor {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn update_clock(&mut self, server_clock: &VectorClock) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn local_clock(&self) -> &VectorClock {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_sync_id` is never used
[INFO] [stdout]   --> src/sync/protocol.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl SyncEvent {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn with_sync_id(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncRequest` is never constructed
[INFO] [stdout]   --> src/sync/protocol.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct SyncRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncResponse` is never constructed
[INFO] [stdout]    --> src/sync/protocol.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct SyncResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Merge` is never constructed
[INFO] [stdout]   --> src/sync/resolver.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum Resolution {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Merge(MergedState),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Resolution` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_device_id`, `merge_clock`, `mark_sync_complete`, and `is_sync_enabled` are never used
[INFO] [stdout]   --> src/sync/state.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl LocalSyncState {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn with_device_id(device_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn merge_clock(&mut self, other: &VectorClock) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn mark_sync_complete(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn is_sync_enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 07s
[INFO] running `Command { std: "docker" "inspect" "bc7b048b88ba2605c6c7967fa73ae0c602af9af87a175edd118c8fc447e47bd5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bc7b048b88ba2605c6c7967fa73ae0c602af9af87a175edd118c8fc447e47bd5", kill_on_drop: false }`
[INFO] [stdout] bc7b048b88ba2605c6c7967fa73ae0c602af9af87a175edd118c8fc447e47bd5
