[INFO] cloning repository https://github.com/YunlongChen/cloud_disk_sync
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/YunlongChen/cloud_disk_sync" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYunlongChen%2Fcloud_disk_sync", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYunlongChen%2Fcloud_disk_sync'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9c71a88f7b35f60838fc8856b42588cb1f57b3cc
[INFO] checking YunlongChen/cloud_disk_sync against try#24e1a22664233bce1f9b5dc6eee7c1f74327e28c for pr-159343
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYunlongChen%2Fcloud_disk_sync" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/YunlongChen/cloud_disk_sync
[INFO] finished tweaking git repo https://github.com/YunlongChen/cloud_disk_sync
[INFO] tweaked toml for git repo https://github.com/YunlongChen/cloud_disk_sync written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/YunlongChen/cloud_disk_sync on toolchain 24e1a22664233bce1f9b5dc6eee7c1f74327e28c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/YunlongChen/cloud_disk_sync 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" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36
[INFO] running `Command { std: "docker" "start" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking ryu v1.0.22
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]     Checking compact_str v0.9.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling zmij v1.0.14
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]     Checking num_threads v0.1.7
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking time-core v0.1.7
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking phf_shared v0.12.1
[INFO] [stderr]     Checking line-clipping v0.3.5
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking lru v0.16.3
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]     Checking clap_lex v0.7.7
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]     Checking phf v0.12.1
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking hybrid-array v0.4.5
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking unicode-truncate v2.0.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking crypto-common v0.2.0-rc.4
[INFO] [stderr]     Checking block-buffer v0.11.0-rc.5
[INFO] [stderr]     Checking time v0.3.45
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking dirs-sys-next v0.1.2
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling libsqlite3-sys v0.36.0
[INFO] [stderr]    Compiling sys-info v0.9.1
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking dirs-next v2.0.0
[INFO] [stderr]     Checking console v0.16.2
[INFO] [stderr]    Compiling tokio-cron-scheduler v0.15.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]    Compiling rlimit v0.10.2
[INFO] [stderr]     Checking iri-string v0.7.10
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking term v0.7.0
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking rtoolbox v0.0.3
[INFO] [stderr]     Checking rustls-pki-types v1.13.2
[INFO] [stderr]     Checking hashlink v0.11.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking winnow v0.6.26
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking encode_unicode v1.0.0
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking shell-words v1.1.1
[INFO] [stderr]     Checking qrcode v0.14.1
[INFO] [stderr]     Checking digest v0.11.0-rc.3
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking unit-prefix v0.5.2
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking hmac v0.13.0-rc.2
[INFO] [stderr]     Checking pbkdf2 v0.13.0-rc.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking prettytable v0.10.0
[INFO] [stderr]     Checking rpassword v7.4.0
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking qr2term v0.3.3
[INFO] [stderr]     Checking indicatif v0.18.3
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking sysinfo v0.37.2
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking dialoguer v0.12.0
[INFO] [stderr]     Checking quick-xml v0.39.0
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking kasuari v0.4.11
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]     Checking clap_complete v4.5.65
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking strum v0.27.2
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking ratatui-core v0.1.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking derive_builder v0.20.2
[INFO] [stderr]     Checking ratatui-widgets v0.3.0
[INFO] [stderr]     Checking ratatui-crossterm v0.1.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking croner v3.0.1
[INFO] [stderr]     Checking cron v0.15.0
[INFO] [stderr]     Checking ratatui-macros v0.7.0
[INFO] [stderr]     Checking ratatui v0.30.0
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking rusqlite v0.38.0
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking warp v0.4.2
[INFO] [stderr]     Checking reqwest v0.13.1
[INFO] [stderr]     Checking cloud-disk-sync v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/core/retry.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[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: `TimeZone`
[INFO] [stdout]  --> src/core/scheduler.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, TimeZone, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/core/retry.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[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: `TimeZone`
[INFO] [stdout]  --> src/core/scheduler.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, TimeZone, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `d` is never read
[INFO] [stdout]    --> src/sync/engine.rs:806:37
[INFO] [stdout]     |
[INFO] [stdout] 806 |                           let mut d = FileDiff::unchanged(
[INFO] [stdout]     |  _____________________________________^
[INFO] [stdout] 807 | |                             path.clone(),
[INFO] [stdout] 808 | |                             crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)),
[INFO] [stdout] 809 | |                             t.clone(),
[INFO] [stdout] 810 | |                         );
[INFO] [stdout]     | |_________________________^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 815 |                           d = FileDiff::new(
[INFO] [stdout]     |                           - `d` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TempStorageHealth` is more private than the item `StorageHealth::temp_storage`
[INFO] [stdout]    --> src/core/health.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub temp_storage: TempStorageHealth,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `StorageHealth::temp_storage` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TempStorageHealth` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/core/health.rs:18:1
[INFO] [stdout]     |
[INFO] [stdout]  18 | struct TempStorageHealth {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ErrorResult` is more private than the item `sync::VerificationResult::errors`
[INFO] [stdout]   --> src/sync/mod.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     pub errors: Vec<ErrorResult>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `sync::VerificationResult::errors` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ErrorResult` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/sync/mod.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct ErrorResult {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `backup_config`, `restore_config`, and `list_backups` are never used
[INFO] [stdout]   --> src/config/migrator.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ConfigMigrator {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn backup_config(config_path: &std::path::Path) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn list_backups(config_path: &std::path::Path) -> Result<Vec<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: field `key_path` is never read
[INFO] [stdout]   --> src/config/security.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SecurityManager {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 14 |     key_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigUtils` is never constructed
[INFO] [stdout]  --> src/config/utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ConfigUtils;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/config/utils.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ConfigUtils {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]   7 |     /// 生成默认配置文件
[INFO] [stdout]   8 |     pub fn generate_default_config() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  14 |     pub fn validate_config_syntax(content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |     pub fn find_config_files() -> Vec<std::path::PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn merge_configs(configs: &[super::ConfigFile]) -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn load_from_env() -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn generate_template(template_type: ConfigTemplate) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn diff_configs(config1: &super::ConfigFile, config2: &super::ConfigFile) -> ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigTemplate` is never used
[INFO] [stdout]    --> src/config/utils.rs:236:10
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub enum ConfigTemplate {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigDiff` is never constructed
[INFO] [stdout]    --> src/config/utils.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `has_changes` are never used
[INFO] [stdout]    --> src/config/utils.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl ConfigDiff {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 253 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn has_changes(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigValidatorImpl` is never constructed
[INFO] [stdout]  --> src/config/validator.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ConfigValidatorImpl;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_cron` is never used
[INFO] [stdout]    --> src/config/validator.rs:124:4
[INFO] [stdout]     |
[INFO] [stdout] 124 | fn is_valid_cron(expr: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseAuditLogger` is never constructed
[INFO] [stdout]   --> src/core/audit.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct DatabaseAuditLogger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/audit.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl DatabaseAuditLogger {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(db_path: &std::path::Path) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheckerImpl` is never constructed
[INFO] [stdout]  --> src/core/health.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HealthCheckerImpl {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/health.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl HealthCheckerImpl {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(providers: HashMap<String, Box<dyn crate::providers::StorageProvider>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `semaphore` is never read
[INFO] [stdout]   --> src/core/rate_limit.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TokenBucketRateLimiter {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceManagerImpl` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct ResourceManagerImpl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/resources.rs:306:12
[INFO] [stdout]     |
[INFO] [stdout] 305 | impl ResourceManagerImpl {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 306 |     pub fn new(limits: ResourceLimits) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn allocate_memory(&self, size: usize) -> Result<MemoryHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn allocate_disk(&self, size: u64) -> Result<DiskHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn current_usage(&self) -> ResourceUsage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn set_limits(&self, limits: ResourceLimits) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub fn start_task(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn end_task(&self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     pub fn cleanup_old_resources(&self, max_age: Duration) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetry` is never constructed
[INFO] [stdout]  --> src/core/retry.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ExponentialBackoffRetry {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `builder` are never used
[INFO] [stdout]   --> src/core/retry.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ExponentialBackoffRetry {
[INFO] [stdout]    | ---------------------------- associated functions in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn builder() -> ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed
[INFO] [stdout]   --> src/core/retry.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/retry.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl ExponentialBackoffRetryBuilder {
[INFO] [stdout]     | ----------------------------------- associated items in this implementation
[INFO] [stdout]  73 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn max_attempts(mut self, attempts: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn initial_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn max_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn backoff_factor(mut self, factor: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn retryable_error(mut self, error_code: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn build(self) -> ExponentialBackoffRetry {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JitterRetry` is never constructed
[INFO] [stdout]    --> src/core/retry.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct JitterRetry {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_jitter` are never used
[INFO] [stdout]    --> src/core/retry.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl JitterRetry {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 126 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn add_jitter(&self, delay: Duration) -> Duration {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerManager` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct SchedulerManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:270:18
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl SchedulerManager {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 270 |     pub async fn new(sync_engine: SyncEngine) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub async fn add_task(&self, mut scheduled_task: ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     async fn schedule_job(&self, scheduled_task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     async fn execute_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub async fn start(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub async fn stop(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub async fn get_tasks(&self) -> Vec<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub async fn get_task(&self, task_id: &str) -> Option<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub async fn delete_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub async fn trigger_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 506 |     pub async fn pause_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     pub async fn resume_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub async fn reschedule_all(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub async fn get_stats(&self) -> SchedulerStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub async fn cleanup_completed_tasks(&self, max_age_days: u32) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     pub async fn export_tasks(&self, format: ExportFormat) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 640 |     fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerStats` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:671:12
[INFO] [stdout]     |
[INFO] [stdout] 671 | pub struct SchedulerStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `success_rate`, and `health_score` are never used
[INFO] [stdout]    --> src/core/scheduler.rs:705:12
[INFO] [stdout]     |
[INFO] [stdout] 704 | impl SchedulerStats {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 705 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     pub fn success_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 733 |     pub fn health_score(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:751:10
[INFO] [stdout]     |
[INFO] [stdout] 751 | pub enum ExportFormat {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvTask` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:759:8
[INFO] [stdout]     |
[INFO] [stdout] 759 | struct CsvTask<'a> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskNotifier` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:773:12
[INFO] [stdout]     |
[INFO] [stdout] 773 | pub struct TaskNotifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:779:12
[INFO] [stdout]     |
[INFO] [stdout] 778 | impl TaskNotifier {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 779 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     pub async fn notify_task_start(&self, task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 799 |     pub async fn notify_task_complete(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub async fn notify_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     async fn send_notification(&self, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 852 |     async fn send_email(&self, _config: &EmailConfig, _message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     async fn send_webhook(&self, url: &str, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailConfig` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:873:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | pub struct EmailConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_schedule_task` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:883:14
[INFO] [stdout]     |
[INFO] [stdout] 883 | pub async fn cmd_schedule_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_list_scheduled_tasks` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:922:14
[INFO] [stdout]     |
[INFO] [stdout] 922 | pub async fn cmd_list_scheduled_tasks(scheduler: &SchedulerManager) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hooks_by_priority` is never read
[INFO] [stdout]  --> src/plugins/manager.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HookManager {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] 8 |     handlers: HashMap<String, Vec<Box<dyn HookHandler>>>,
[INFO] [stdout] 9 |     hooks_by_priority: HashMap<PluginHook, Vec<Box<dyn HookHandler>>>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `all_hook_types` is never used
[INFO] [stdout]   --> src/plugins/manager.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl HookManager {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn all_hook_types() -> Vec<&'static str> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client`, `token`, `refresh_token`, and `rate_limiter` are never read
[INFO] [stdout]   --> src/providers/aliyun.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AliYunDriveProvider {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 14 |     client: reqwest::Client,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     token: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     refresh_token: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 17 |     rate_limiter: Arc<dyn RateLimiter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `refresh_token_if_needed` is never used
[INFO] [stdout]   --> src/providers/aliyun.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl AliYunDriveProvider {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     async fn refresh_token_if_needed(&mut self) -> Result<(), ProviderError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `diff_cache` is never read
[INFO] [stdout]   --> src/sync/engine.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SyncEngine {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     diff_cache: DashMap<String, FileDiff>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng`
[INFO] [stdout]  --> tests/common/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::{Rng, rng};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/report_tests.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let mut report = SyncReport {
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> tests/e2e_config_test.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/consistency_tests.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[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: `rng`
[INFO] [stdout]  --> tests/common/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::{Rng, rng};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `generate_deep_structure`
[INFO] [stdout]   --> tests/consistency_tests.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use common::{generate_deep_structure, start_mock_server_with_seed};
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> tests/webdav_sync_basic.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> tests/webdav_sync_basic.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> tests/webdav_sync_basic.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> tests/webdav_sync_basic.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> tests/webdav_sync_basic.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warp::Filter`
[INFO] [stdout]  --> tests/webdav_sync_basic.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use warp::Filter;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warp::http::Method`
[INFO] [stdout]   --> tests/webdav_sync_basic.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use warp::http::Method;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng`
[INFO] [stdout]  --> tests/common/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::{Rng, rng};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileStore`
[INFO] [stdout]   --> tests/webdav_sync_basic.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | use common::{FileStore, InMemoryFile, start_mock_server_with_seed};
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> tests/manual_oneonefive_test.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> tests/manual_oneonefive_test.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::fs`
[INFO] [stdout]   --> tests/manual_oneonefive_test.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tokio::fs;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> tests/manual_oneonefive_test.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng`
[INFO] [stdout]  --> tests/common/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::{Rng, rng};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FaultConfig` is never constructed
[INFO] [stdout]   --> tests/common/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct FaultConfig {
[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 `FaultInjectionProvider` is never constructed
[INFO] [stdout]   --> tests/common/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct FaultInjectionProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `maybe_inject_fault` are never used
[INFO] [stdout]   --> tests/common/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl FaultInjectionProvider {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 54 |     pub fn new(inner: Box<dyn StorageProvider>, config: FaultConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     async fn maybe_inject_fault(&self) -> Result<(), SyncError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `d` is never read
[INFO] [stdout]    --> src/sync/engine.rs:806:37
[INFO] [stdout]     |
[INFO] [stdout] 806 |                           let mut d = FileDiff::unchanged(
[INFO] [stdout]     |  _____________________________________^
[INFO] [stdout] 807 | |                             path.clone(),
[INFO] [stdout] 808 | |                             crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)),
[INFO] [stdout] 809 | |                             t.clone(),
[INFO] [stdout] 810 | |                         );
[INFO] [stdout]     | |_________________________^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 815 |                           d = FileDiff::new(
[INFO] [stdout]     |                           - `d` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FaultConfig` is never constructed
[INFO] [stdout]   --> tests/common/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct FaultConfig {
[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 `FaultInjectionProvider` is never constructed
[INFO] [stdout]   --> tests/common/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct FaultInjectionProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `maybe_inject_fault` are never used
[INFO] [stdout]   --> tests/common/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl FaultInjectionProvider {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 54 |     pub fn new(inner: Box<dyn StorageProvider>, config: FaultConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     async fn maybe_inject_fault(&self) -> Result<(), SyncError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_test_files` is never used
[INFO] [stdout]    --> tests/common/mod.rs:141:14
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub async fn generate_test_files(dir: &Path, count: usize, size_bytes: usize) -> Vec<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_deep_structure` is never used
[INFO] [stdout]    --> tests/common/mod.rs:158:14
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub async fn generate_deep_structure(root: &Path, depth: usize, files_per_level: usize) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FaultConfig` is never constructed
[INFO] [stdout]   --> tests/common/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct FaultConfig {
[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 `FaultInjectionProvider` is never constructed
[INFO] [stdout]   --> tests/common/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct FaultInjectionProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `maybe_inject_fault` are never used
[INFO] [stdout]   --> tests/common/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl FaultInjectionProvider {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 54 |     pub fn new(inner: Box<dyn StorageProvider>, config: FaultConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     async fn maybe_inject_fault(&self) -> Result<(), SyncError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TempStorageHealth` is more private than the item `StorageHealth::temp_storage`
[INFO] [stdout]    --> src/core/health.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub temp_storage: TempStorageHealth,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `StorageHealth::temp_storage` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TempStorageHealth` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/core/health.rs:18:1
[INFO] [stdout]     |
[INFO] [stdout]  18 | struct TempStorageHealth {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_deep_structure` is never used
[INFO] [stdout]    --> tests/common/mod.rs:158:14
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub async fn generate_deep_structure(root: &Path, depth: usize, files_per_level: usize) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ErrorResult` is more private than the item `sync::VerificationResult::errors`
[INFO] [stdout]   --> src/sync/mod.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     pub errors: Vec<ErrorResult>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `sync::VerificationResult::errors` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ErrorResult` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/sync/mod.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct ErrorResult {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `backup_config`, `restore_config`, and `list_backups` are never used
[INFO] [stdout]   --> src/config/migrator.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ConfigMigrator {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn backup_config(config_path: &std::path::Path) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn list_backups(config_path: &std::path::Path) -> Result<Vec<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: field `key_path` is never read
[INFO] [stdout]   --> src/config/security.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SecurityManager {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 14 |     key_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigUtils` is never constructed
[INFO] [stdout]  --> src/config/utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ConfigUtils;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/config/utils.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ConfigUtils {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]   7 |     /// 生成默认配置文件
[INFO] [stdout]   8 |     pub fn generate_default_config() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  14 |     pub fn validate_config_syntax(content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |     pub fn find_config_files() -> Vec<std::path::PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn merge_configs(configs: &[super::ConfigFile]) -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn load_from_env() -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn generate_template(template_type: ConfigTemplate) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn diff_configs(config1: &super::ConfigFile, config2: &super::ConfigFile) -> ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigTemplate` is never used
[INFO] [stdout]    --> src/config/utils.rs:236:10
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub enum ConfigTemplate {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigDiff` is never constructed
[INFO] [stdout]    --> src/config/utils.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `has_changes` are never used
[INFO] [stdout]    --> src/config/utils.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl ConfigDiff {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 253 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn has_changes(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigValidatorImpl` is never constructed
[INFO] [stdout]  --> src/config/validator.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ConfigValidatorImpl;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_cron` is never used
[INFO] [stdout]    --> src/config/validator.rs:124:4
[INFO] [stdout]     |
[INFO] [stdout] 124 | fn is_valid_cron(expr: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseAuditLogger` is never constructed
[INFO] [stdout]   --> src/core/audit.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct DatabaseAuditLogger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/audit.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl DatabaseAuditLogger {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(db_path: &std::path::Path) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheckerImpl` is never constructed
[INFO] [stdout]  --> src/core/health.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HealthCheckerImpl {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/health.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl HealthCheckerImpl {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(providers: HashMap<String, Box<dyn crate::providers::StorageProvider>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `semaphore` is never read
[INFO] [stdout]   --> src/core/rate_limit.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TokenBucketRateLimiter {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceManagerImpl` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct ResourceManagerImpl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/resources.rs:306:12
[INFO] [stdout]     |
[INFO] [stdout] 305 | impl ResourceManagerImpl {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 306 |     pub fn new(limits: ResourceLimits) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn allocate_memory(&self, size: usize) -> Result<MemoryHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn allocate_disk(&self, size: u64) -> Result<DiskHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn current_usage(&self) -> ResourceUsage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn set_limits(&self, limits: ResourceLimits) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub fn start_task(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn end_task(&self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     pub fn cleanup_old_resources(&self, max_age: Duration) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetry` is never constructed
[INFO] [stdout]  --> src/core/retry.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ExponentialBackoffRetry {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `builder` are never used
[INFO] [stdout]   --> src/core/retry.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ExponentialBackoffRetry {
[INFO] [stdout]    | ---------------------------- associated functions in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn builder() -> ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed
[INFO] [stdout]   --> src/core/retry.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/retry.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl ExponentialBackoffRetryBuilder {
[INFO] [stdout]     | ----------------------------------- associated items in this implementation
[INFO] [stdout]  73 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn max_attempts(mut self, attempts: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn initial_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn max_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn backoff_factor(mut self, factor: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn retryable_error(mut self, error_code: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn build(self) -> ExponentialBackoffRetry {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JitterRetry` is never constructed
[INFO] [stdout]    --> src/core/retry.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct JitterRetry {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_jitter` are never used
[INFO] [stdout]    --> src/core/retry.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl JitterRetry {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 126 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn add_jitter(&self, delay: Duration) -> Duration {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerManager` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct SchedulerManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:270:18
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl SchedulerManager {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 270 |     pub async fn new(sync_engine: SyncEngine) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub async fn add_task(&self, mut scheduled_task: ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     async fn schedule_job(&self, scheduled_task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     async fn execute_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub async fn start(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub async fn stop(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub async fn get_tasks(&self) -> Vec<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub async fn get_task(&self, task_id: &str) -> Option<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub async fn delete_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub async fn trigger_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 506 |     pub async fn pause_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     pub async fn resume_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub async fn reschedule_all(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub async fn get_stats(&self) -> SchedulerStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub async fn cleanup_completed_tasks(&self, max_age_days: u32) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     pub async fn export_tasks(&self, format: ExportFormat) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 640 |     fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerStats` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:671:12
[INFO] [stdout]     |
[INFO] [stdout] 671 | pub struct SchedulerStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `success_rate`, and `health_score` are never used
[INFO] [stdout]    --> src/core/scheduler.rs:705:12
[INFO] [stdout]     |
[INFO] [stdout] 704 | impl SchedulerStats {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 705 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     pub fn success_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 733 |     pub fn health_score(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:751:10
[INFO] [stdout]     |
[INFO] [stdout] 751 | pub enum ExportFormat {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvTask` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:759:8
[INFO] [stdout]     |
[INFO] [stdout] 759 | struct CsvTask<'a> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskNotifier` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:773:12
[INFO] [stdout]     |
[INFO] [stdout] 773 | pub struct TaskNotifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:779:12
[INFO] [stdout]     |
[INFO] [stdout] 778 | impl TaskNotifier {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 779 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     pub async fn notify_task_start(&self, task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 799 |     pub async fn notify_task_complete(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub async fn notify_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     async fn send_notification(&self, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 852 |     async fn send_email(&self, _config: &EmailConfig, _message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     async fn send_webhook(&self, url: &str, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailConfig` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:873:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | pub struct EmailConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_schedule_task` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:883:14
[INFO] [stdout]     |
[INFO] [stdout] 883 | pub async fn cmd_schedule_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_list_scheduled_tasks` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:922:14
[INFO] [stdout]     |
[INFO] [stdout] 922 | pub async fn cmd_list_scheduled_tasks(scheduler: &SchedulerManager) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hooks_by_priority` is never read
[INFO] [stdout]  --> src/plugins/manager.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HookManager {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] 8 |     handlers: HashMap<String, Vec<Box<dyn HookHandler>>>,
[INFO] [stdout] 9 |     hooks_by_priority: HashMap<PluginHook, Vec<Box<dyn HookHandler>>>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `all_hook_types` is never used
[INFO] [stdout]   --> src/plugins/manager.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl HookManager {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn all_hook_types() -> Vec<&'static str> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client`, `token`, `refresh_token`, and `rate_limiter` are never read
[INFO] [stdout]   --> src/providers/aliyun.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AliYunDriveProvider {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 14 |     client: reqwest::Client,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     token: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     refresh_token: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 17 |     rate_limiter: Arc<dyn RateLimiter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `refresh_token_if_needed` is never used
[INFO] [stdout]   --> src/providers/aliyun.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl AliYunDriveProvider {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     async fn refresh_token_if_needed(&mut self) -> Result<(), ProviderError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `diff_cache` is never read
[INFO] [stdout]   --> src/sync/engine.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SyncEngine {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     diff_cache: DashMap<String, FileDiff>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `test_content`
[INFO] [stdout]    --> tests/manual_oneonefive_test.rs:300:9
[INFO] [stdout]     |
[INFO] [stdout] 300 |     let test_content = "Hello, 115 Cloud Disk! This is a test file for manual testing.";
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_test_content`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_test_files` is never used
[INFO] [stdout]    --> tests/common/mod.rs:141:14
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub async fn generate_test_files(dir: &Path, count: usize, size_bytes: usize) -> Vec<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: function `generate_deep_structure` is never used
[INFO] [stdout]    --> tests/common/mod.rs:158:14
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub async fn generate_deep_structure(root: &Path, depth: usize, files_per_level: usize) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/core/retry.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[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: `TimeZone`
[INFO] [stdout]  --> src/core/scheduler.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, TimeZone, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `d` is never read
[INFO] [stdout]    --> src/sync/engine.rs:806:37
[INFO] [stdout]     |
[INFO] [stdout] 806 |                           let mut d = FileDiff::unchanged(
[INFO] [stdout]     |  _____________________________________^
[INFO] [stdout] 807 | |                             path.clone(),
[INFO] [stdout] 808 | |                             crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)),
[INFO] [stdout] 809 | |                             t.clone(),
[INFO] [stdout] 810 | |                         );
[INFO] [stdout]     | |_________________________^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 815 |                           d = FileDiff::new(
[INFO] [stdout]     |                           - `d` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/core/retry.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[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: `TimeZone`
[INFO] [stdout]  --> src/core/scheduler.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, TimeZone, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `d` is never read
[INFO] [stdout]    --> src/sync/engine.rs:806:37
[INFO] [stdout]     |
[INFO] [stdout] 806 |                           let mut d = FileDiff::unchanged(
[INFO] [stdout]     |  _____________________________________^
[INFO] [stdout] 807 | |                             path.clone(),
[INFO] [stdout] 808 | |                             crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)),
[INFO] [stdout] 809 | |                             t.clone(),
[INFO] [stdout] 810 | |                         );
[INFO] [stdout]     | |_________________________^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 815 |                           d = FileDiff::new(
[INFO] [stdout]     |                           - `d` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TempStorageHealth` is more private than the item `StorageHealth::temp_storage`
[INFO] [stdout]    --> src/core/health.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub temp_storage: TempStorageHealth,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `StorageHealth::temp_storage` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TempStorageHealth` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/core/health.rs:18:1
[INFO] [stdout]     |
[INFO] [stdout]  18 | struct TempStorageHealth {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ErrorResult` is more private than the item `sync::VerificationResult::errors`
[INFO] [stdout]   --> src/sync/mod.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     pub errors: Vec<ErrorResult>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `sync::VerificationResult::errors` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ErrorResult` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/sync/mod.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct ErrorResult {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]   --> src/config/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl AccountConfig {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 38 |     pub fn validate(&self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]   --> src/config/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | impl SyncTask {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 89 |     pub fn validate(&self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_account` and `update_task` are never used
[INFO] [stdout]    --> src/config/mod.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl ConfigManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn update_account(&mut self, account: AccountConfig) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn update_task(&mut self, task: SyncTask) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate`, `find_account`, `find_task`, `find_encryption_key`, and `find_schedule` are never used
[INFO] [stdout]    --> src/config/mod.rs:539:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl ConfigFile {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub fn validate(&self) -> Result<(), Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 577 |     pub fn find_account(&self, account_id: &str) -> Option<&AccountConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     pub fn find_task(&self, task_id: &str) -> Option<&SyncTask> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn find_encryption_key(&self, key_id: &str) -> Option<&EncryptionKey> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 589 |     pub fn find_schedule(&self, schedule_id: &str) -> Option<&ScheduleConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `backup_config`, `restore_config`, and `list_backups` are never used
[INFO] [stdout]   --> src/config/migrator.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ConfigMigrator {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn backup_config(config_path: &std::path::Path) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn list_backups(config_path: &std::path::Path) -> Result<Vec<String>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `key_path` is never read
[INFO] [stdout]   --> src/config/security.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SecurityManager {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 14 |     key_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigUtils` is never constructed
[INFO] [stdout]  --> src/config/utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ConfigUtils;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/config/utils.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ConfigUtils {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]   7 |     /// 生成默认配置文件
[INFO] [stdout]   8 |     pub fn generate_default_config() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  14 |     pub fn validate_config_syntax(content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |     pub fn find_config_files() -> Vec<std::path::PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn merge_configs(configs: &[super::ConfigFile]) -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn load_from_env() -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn generate_template(template_type: ConfigTemplate) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn diff_configs(config1: &super::ConfigFile, config2: &super::ConfigFile) -> ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigTemplate` is never used
[INFO] [stdout]    --> src/config/utils.rs:236:10
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub enum ConfigTemplate {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigDiff` is never constructed
[INFO] [stdout]    --> src/config/utils.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `has_changes` are never used
[INFO] [stdout]    --> src/config/utils.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl ConfigDiff {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 253 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn has_changes(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigValidatorImpl` is never constructed
[INFO] [stdout]  --> src/config/validator.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ConfigValidatorImpl;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_cron` is never used
[INFO] [stdout]    --> src/config/validator.rs:124:4
[INFO] [stdout]     |
[INFO] [stdout] 124 | fn is_valid_cron(expr: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditOperation` is never constructed
[INFO] [stdout]  --> src/core/audit.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AuditOperation {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OperationType` is never used
[INFO] [stdout]   --> src/core/audit.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum OperationType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditFilter` is never constructed
[INFO] [stdout]   --> src/core/audit.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct AuditFilter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseAuditLogger` is never constructed
[INFO] [stdout]   --> src/core/audit.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct DatabaseAuditLogger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/audit.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl DatabaseAuditLogger {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(db_path: &std::path::Path) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheckerImpl` is never constructed
[INFO] [stdout]  --> src/core/health.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HealthCheckerImpl {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/health.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl HealthCheckerImpl {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(providers: HashMap<String, Box<dyn crate::providers::StorageProvider>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TempStorageHealth` is never constructed
[INFO] [stdout]   --> src/core/health.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct TempStorageHealth {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HealthStatus` is never used
[INFO] [stdout]    --> src/core/health.rs:112:10
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub enum HealthStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StorageHealth` is never constructed
[INFO] [stdout]    --> src/core/health.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct StorageHealth {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocalStorageHealth` is never constructed
[INFO] [stdout]    --> src/core/health.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct LocalStorageHealth {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseHealth` is never constructed
[INFO] [stdout]    --> src/core/health.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct DatabaseHealth {}
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectivityStatus` is never constructed
[INFO] [stdout]    --> src/core/health.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct ConnectivityStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectivityTest` is never constructed
[INFO] [stdout]    --> src/core/health.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub struct ConnectivityTest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Protocol` is never used
[INFO] [stdout]    --> src/core/health.rs:169:10
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub enum Protocol {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketRateLimiter` is never constructed
[INFO] [stdout]   --> src/core/rate_limit.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TokenBucketRateLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `refill_tokens` are never used
[INFO] [stdout]   --> src/core/rate_limit.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl TokenBucketRateLimiter {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 42 |     pub fn new(capacity: u64, requests_per_second: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn refill_tokens(&self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `window_size`, `max_requests`, and `requests` are never read
[INFO] [stdout]    --> src/core/rate_limit.rs:118:16
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct SlidingWindowRateLimiter {
[INFO] [stdout]     |            ------------------------ fields in this struct
[INFO] [stdout] 118 |     pub(crate) window_size: Duration,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 119 |     pub(crate) max_requests: u64,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 120 |     pub(crate) requests: Mutex<Vec<Instant>>,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `cleanup_old_requests` are never used
[INFO] [stdout]    --> src/core/rate_limit.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl SlidingWindowRateLimiter {
[INFO] [stdout]     | ----------------------------- associated items in this implementation
[INFO] [stdout] 124 |     pub fn new(window_size: Duration, max_requests: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn cleanup_old_requests(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryHandle` is never constructed
[INFO] [stdout]   --> src/core/resources.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MemoryHandle {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `id`, `size`, `allocated_at`, and `age` are never used
[INFO] [stdout]   --> src/core/resources.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MemoryHandle {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(id: String, size: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn id(&self) -> &str {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn size(&self) -> usize {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn allocated_at(&self) -> Instant {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn age(&self) -> Duration {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiskHandle` is never constructed
[INFO] [stdout]   --> src/core/resources.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct DiskHandle {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/core/resources.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl DiskHandle {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 55 |     pub fn new(id: String, path: std::path::PathBuf, size: u64, is_temporary: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn id(&self) -> &str {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn path(&self) -> &std::path::Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn size(&self) -> u64 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn is_temporary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn allocated_at(&self) -> Instant {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn age(&self) -> Duration {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn cleanup(&self) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceUsage` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct ResourceUsage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_from_system`, `is_overloaded`, and `to_string` are never used
[INFO] [stdout]    --> src/core/resources.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl ResourceUsage {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 128 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn update_from_system(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn is_overloaded(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceLimits` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct ResourceLimits {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default` and `validate` are never used
[INFO] [stdout]    --> src/core/resources.rs:251:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | impl ResourceLimits {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 251 |     pub fn default() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn validate(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceManagerImpl` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct ResourceManagerImpl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/resources.rs:306:12
[INFO] [stdout]     |
[INFO] [stdout] 305 | impl ResourceManagerImpl {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 306 |     pub fn new(limits: ResourceLimits) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn allocate_memory(&self, size: usize) -> Result<MemoryHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn allocate_disk(&self, size: u64) -> Result<DiskHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn current_usage(&self) -> ResourceUsage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn set_limits(&self, limits: ResourceLimits) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub fn start_task(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn end_task(&self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     pub fn cleanup_old_resources(&self, max_age: Duration) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetry` is never constructed
[INFO] [stdout]  --> src/core/retry.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ExponentialBackoffRetry {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `builder` are never used
[INFO] [stdout]   --> src/core/retry.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ExponentialBackoffRetry {
[INFO] [stdout]    | ---------------------------- associated functions in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn builder() -> ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed
[INFO] [stdout]   --> src/core/retry.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/retry.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl ExponentialBackoffRetryBuilder {
[INFO] [stdout]     | ----------------------------------- associated items in this implementation
[INFO] [stdout]  73 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn max_attempts(mut self, attempts: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn initial_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn max_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn backoff_factor(mut self, factor: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn retryable_error(mut self, error_code: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn build(self) -> ExponentialBackoffRetry {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JitterRetry` is never constructed
[INFO] [stdout]    --> src/core/retry.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct JitterRetry {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_jitter` are never used
[INFO] [stdout]    --> src/core/retry.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl JitterRetry {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 126 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn add_jitter(&self, delay: Duration) -> Duration {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScheduledTask` is never constructed
[INFO] [stdout]   --> src/core/scheduler.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ScheduledTask {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl ScheduledTask {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  60 |     pub fn new(sync_task: &SyncTask, schedule: Schedule) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn calculate_next_run(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn update_statistics(&mut self, duration: Duration, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn should_run_now(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn get_status(&self) -> TaskStatus {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn get_health(&self) -> TaskHealth {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn format_next_run(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn enable(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn disable(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn retry(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskResult` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct TaskResult {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TaskStatus` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:233:10
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub enum TaskStatus {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TaskHealth` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub enum TaskHealth {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerManager` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct SchedulerManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:270:18
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl SchedulerManager {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 270 |     pub async fn new(sync_engine: SyncEngine) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub async fn add_task(&self, mut scheduled_task: ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     async fn schedule_job(&self, scheduled_task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     async fn execute_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub async fn start(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub async fn stop(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub async fn get_tasks(&self) -> Vec<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub async fn get_task(&self, task_id: &str) -> Option<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub async fn delete_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub async fn trigger_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 506 |     pub async fn pause_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     pub async fn resume_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub async fn reschedule_all(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub async fn get_stats(&self) -> SchedulerStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub async fn cleanup_completed_tasks(&self, max_age_days: u32) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     pub async fn export_tasks(&self, format: ExportFormat) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 640 |     fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerStats` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:671:12
[INFO] [stdout]     |
[INFO] [stdout] 671 | pub struct SchedulerStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `success_rate`, and `health_score` are never used
[INFO] [stdout]    --> src/core/scheduler.rs:705:12
[INFO] [stdout]     |
[INFO] [stdout] 704 | impl SchedulerStats {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 705 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     pub fn success_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 733 |     pub fn health_score(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:751:10
[INFO] [stdout]     |
[INFO] [stdout] 751 | pub enum ExportFormat {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvTask` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:759:8
[INFO] [stdout]     |
[INFO] [stdout] 759 | struct CsvTask<'a> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskNotifier` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:773:12
[INFO] [stdout]     |
[INFO] [stdout] 773 | pub struct TaskNotifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:779:12
[INFO] [stdout]     |
[INFO] [stdout] 778 | impl TaskNotifier {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 779 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     pub async fn notify_task_start(&self, task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 799 |     pub async fn notify_task_complete(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub async fn notify_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     async fn send_notification(&self, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 852 |     async fn send_email(&self, _config: &EmailConfig, _message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     async fn send_webhook(&self, url: &str, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailConfig` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:873:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | pub struct EmailConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_schedule_task` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:883:14
[INFO] [stdout]     |
[INFO] [stdout] 883 | pub async fn cmd_schedule_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_list_scheduled_tasks` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:922:14
[INFO] [stdout]     |
[INFO] [stdout] 922 | pub async fn cmd_list_scheduled_tasks(scheduler: &SchedulerManager) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StateManager` is never used
[INFO] [stdout]   --> src/core/traits.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait StateManager: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ProgressReporter` is never used
[INFO] [stdout]   --> src/core/traits.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait ProgressReporter: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RetryStrategy` is never used
[INFO] [stdout]   --> src/core/traits.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub trait RetryStrategy: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `acquire`, `current_rate`, `set_rate`, and `try_acquire` are never used
[INFO] [stdout]   --> src/core/traits.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub trait RateLimiter: Send + Sync {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] 40 |     async fn acquire<'a>(&'a self) -> Result<()>
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn current_rate(&self) -> f64; // 请求/秒
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 45 |     fn set_rate(&mut self, requests_per_second: f64);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 46 |     fn try_acquire(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ChecksumCalculator` is never used
[INFO] [stdout]   --> src/core/traits.rs:50:11
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub trait ChecksumCalculator: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DiffDetector` is never used
[INFO] [stdout]   --> src/core/traits.rs:57:11
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub trait DiffDetector: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FileFilter` is never used
[INFO] [stdout]   --> src/core/traits.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub trait FileFilter: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TaskScheduler` is never used
[INFO] [stdout]   --> src/core/traits.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub trait TaskScheduler: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Notifier` is never used
[INFO] [stdout]   --> src/core/traits.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Notifier: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AuditLogger` is never used
[INFO] [stdout]   --> src/core/traits.rs:92:11
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub trait AuditLogger: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ConfigValidator` is never used
[INFO] [stdout]    --> src/core/traits.rs:102:11
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub trait ConfigValidator: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `HealthChecker` is never used
[INFO] [stdout]    --> src/core/traits.rs:110:11
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub trait HealthChecker: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ResourceManager` is never used
[INFO] [stdout]    --> src/core/traits.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub trait ResourceManager: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Plugin` is never used
[INFO] [stdout]    --> src/core/traits.rs:126:11
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub trait Plugin: Send + Sync {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `HookHandler` is never used
[INFO] [stdout]    --> src/core/traits.rs:139:11
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub trait HookHandler: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransferStats` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct TransferStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadata` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub struct FileMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileChange` is never used
[INFO] [stdout]    --> src/core/traits.rs:178:10
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub enum FileChange {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiffOptions` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub struct DiffOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressUpdate` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub struct ProgressUpdate {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `algorithm`, `key_id`, `nonce`, and `hmac` are never read
[INFO] [stdout]   --> src/encryption/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct EncryptionMetadata {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 17 |     pub algorithm: EncryptionAlgorithm,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 18 |     pub key_id: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 19 |     pub nonce: Vec<u8>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 20 |     pub hmac: Hmac,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `decrypt_file` is never used
[INFO] [stdout]   --> src/encryption/mod.rs:99:18
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl EncryptionManager {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub async fn decrypt_file(
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `key_size`, `iv_size`, `tag_size`, and `recommended_iv_mode` are never used
[INFO] [stdout]   --> src/encryption/types.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl EncryptionAlgorithm {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 19 |     pub fn key_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn iv_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn tag_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn recommended_iv_mode(&self) -> IvMode {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `requires_unique_per_file`, `generate_iv`, `generate_random_iv`, `generate_derived_iv`, `generate_counter_iv`, and `generate_file_offset_iv` are never used
[INFO] [stdout]    --> src/encryption/types.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl IvMode {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout]  75 |     pub fn requires_unique_per_file(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn generate_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn generate_random_iv(&self, size: usize) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     fn generate_derived_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn generate_counter_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn generate_file_offset_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IvContext` is never constructed
[INFO] [stdout]    --> src/encryption/types.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct IvContext {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum SyncError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 35 |     Validation(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     Timeout(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     RateLimitExceeded(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     AuthenticationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     PermissionDenied(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     FileNotFound(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     ResourceExhausted(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     Conflict(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     IntegrityCheckFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     RetryLimitExceeded(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     OperationCanceled,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     Unsupported(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FileNotFound`, `ReadFailed`, `ParseFailed`, and `MissingField` are never constructed
[INFO] [stdout]   --> src/error/mod.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum ConfigError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 76 |     #[error("Configuration file not found: {0}")]
[INFO] [stdout] 77 |     FileNotFound(PathBuf),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     ReadFailed(#[source] IoError),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     ParseFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     MissingField(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/error/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout]  96 | pub enum ProviderError {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 101 |     NotSupported(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     InvalidCredentials(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     QuotaExceeded(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     RateLimited(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     AuthFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     Timeout(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     PermissionDenied(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProviderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidKey`, `DecryptionFailed`, `InvalidIV`, `IntegrityCheckFailed`, and `UnsupportedAlgorithm` are never constructed
[INFO] [stdout]    --> src/error/mod.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub enum EncryptionError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 143 |     InvalidKey(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     DecryptionFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     InvalidIV,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     IntegrityCheckFailed,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     UnsupportedAlgorithm(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EncryptionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Full`, `NotAvailable`, `Timeout`, `Corruption`, and `VersionMismatch` are never constructed
[INFO] [stdout]    --> src/error/mod.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub enum StorageError {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] 166 |     #[error("Storage full: {0}")]
[INFO] [stdout] 167 |     Full(String),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     NotAvailable(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     Timeout(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     Corruption(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     VersionMismatch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StorageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_retryable`, `is_fatal`, and `error_code` are never used
[INFO] [stdout]    --> src/error/mod.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl SyncError {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 184 |     pub fn is_retryable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn is_fatal(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn error_code(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ConfigResult` is never used
[INFO] [stdout]    --> src/error/mod.rs:239:10
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub type ConfigResult<T> = std::result::Result<T, ConfigError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ProviderResult` is never used
[INFO] [stdout]    --> src/error/mod.rs:240:10
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub type ProviderResult<T> = std::result::Result<T, ProviderError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `EncryptionResult` is never used
[INFO] [stdout]    --> src/error/mod.rs:241:10
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub type EncryptionResult<T> = std::result::Result<T, EncryptionError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadata` is never constructed
[INFO] [stdout]  --> src/plugins/mod.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct FileMetadata {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PluginHook` is never used
[INFO] [stdout]  --> src/plugins/hooks.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum PluginHook {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HookPriority` is never used
[INFO] [stdout]   --> src/plugins/hooks.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum HookPriority {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name`, `priority`, and `set_priority` are never used
[INFO] [stdout]   --> src/plugins/hooks.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl PluginHook {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 57 |     pub fn name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn priority(&self) -> HookPriority {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn set_priority(&mut self, priority: HookPriority) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HookContext` is never constructed
[INFO] [stdout]    --> src/plugins/hooks.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct HookContext {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/plugins/hooks.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl HookContext {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn with_task(mut self, task: SyncTask) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn with_report(mut self, report: SyncReport) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn with_file(mut self, file: FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn with_error(mut self, error: SyncError) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn set_custom_data(&mut self, key: String, value: serde_json::Value) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn get_custom_data(&self, key: &str) -> Option<&serde_json::Value> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `HookHandler` is never used
[INFO] [stdout]    --> src/plugins/hooks.rs:156:11
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub trait HookHandler: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HookManager` is never constructed
[INFO] [stdout]  --> src/plugins/manager.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HookManager {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `register_handler`, `execute_hook`, and `all_hook_types` are never used
[INFO] [stdout]   --> src/plugins/manager.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl HookManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn register_handler(&mut self, handler: Box<dyn HookHandler>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub async fn execute_hook(&self, hook: PluginHook, context: &mut HookContext) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn all_hook_types() -> Vec<&'static str> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoggingPlugin` is never constructed
[INFO] [stdout]   --> src/plugins/manager.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct LoggingPlugin {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/plugins/manager.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl LoggingPlugin {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 71 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `verify`, `stat`, and `exists` are never used
[INFO] [stdout]   --> src/providers/mod.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub trait StorageProvider: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 20 |     async fn verify(&self) -> Result<(), SyncError>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     async fn stat(&self, path: &str) -> Result<FileInfo, SyncError>;
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 32 |     async fn exists(&self, path: &str) -> Result<bool, SyncError>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes_uploaded`, `file_size`, `checksum`, and `elapsed_time` are never read
[INFO] [stdout]   --> src/providers/mod.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct UploadResult {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 46 |     pub bytes_uploaded: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     pub file_size: u64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 48 |     pub checksum: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 49 |     pub elapsed_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UploadResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes_downloaded`, `file_size`, `checksum`, and `elapsed_time` are never read
[INFO] [stdout]   --> src/providers/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct DownloadResult {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 54 |     pub bytes_downloaded: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     pub file_size: u64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 56 |     pub checksum: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 57 |     pub elapsed_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DownloadResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedProvider` is never constructed
[INFO] [stdout]   --> src/providers/mod.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct RateLimitedProvider<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/providers/mod.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T: StorageProvider> RateLimitedProvider<T> {
[INFO] [stdout]    | ----------------------------------------------- associated function in this implementation
[INFO] [stdout] 66 |     pub fn new(inner: T, config: RateLimitConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client`, `token`, `refresh_token`, and `rate_limiter` are never read
[INFO] [stdout]   --> src/providers/aliyun.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AliYunDriveProvider {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 14 |     client: reqwest::Client,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     token: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     refresh_token: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 17 |     rate_limiter: Arc<dyn RateLimiter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `refresh_token_if_needed` is never used
[INFO] [stdout]   --> src/providers/aliyun.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl AliYunDriveProvider {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     async fn refresh_token_if_needed(&mut self) -> Result<(), ProviderError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_html`, `generate_file_rows`, `generate_error_list`, and `generate_json` are never used
[INFO] [stdout]    --> src/report/mod.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl SyncReport {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn generate_html(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn generate_file_rows(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn generate_error_list(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn generate_json(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_str`, `emoji`, `is_completed`, `is_successful`, `can_retry`, and `is_active` are never used
[INFO] [stdout]    --> src/report/mod.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | impl SyncStatus {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 205 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn emoji(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn is_completed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn is_successful(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn can_retry(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/report/mod.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | impl FileSyncResult {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn from_diff(diff: &FileDiff, operation: FileOperation) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn mark_started(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn mark_completed(&mut self, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn mark_retry(&mut self, error: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn mark_verifying(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn mark_verified(&mut self, verified: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn add_warning(&mut self, warning: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_completed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     pub fn human_readable_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub fn human_readable_transferred(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn human_readable_speed(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn detailed_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn to_json(&self) -> Result<String, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub fn from_json(json: &str) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_str`, `emoji`, `is_completed`, `is_successful`, and `can_retry` are never used
[INFO] [stdout]    --> src/report/mod.rs:589:12
[INFO] [stdout]     |
[INFO] [stdout] 588 | impl FileSyncStatus {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 589 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 606 |     pub fn emoji(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     pub fn is_completed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 630 |     pub fn is_successful(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn can_retry(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_extension`, `from_path`, `from_metadata`, `from_mime_type`, `is_compressible`, and `is_binary` are never used
[INFO] [stdout]    --> src/report/mod.rs:771:12
[INFO] [stdout]     |
[INFO] [stdout] 770 | impl FileType {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 771 |     pub fn from_extension(extension: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 796 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 808 |     pub fn from_metadata(metadata: &crate::sync::diff::FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 822 |     pub fn from_mime_type(mime_type: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     pub fn is_compressible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 904 |     pub fn is_binary(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update_speed_metrics` are never used
[INFO] [stdout]     --> src/report/mod.rs:962:12
[INFO] [stdout]      |
[INFO] [stdout]  961 | impl SyncStatistics {
[INFO] [stdout]      | ------------------- associated items in this implementation
[INFO] [stdout]  962 |     pub fn new() -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1033 |     pub fn update_speed_metrics(&mut self, speed: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `success_rate` is never used
[INFO] [stdout]     --> src/report/mod.rs:1280:12
[INFO] [stdout]      |
[INFO] [stdout] 1243 | impl FileTypeStats {
[INFO] [stdout]      | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1280 |     pub fn success_rate(&self) -> f64 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VerificationResult` is never constructed
[INFO] [stdout]  --> src/sync/mod.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct VerificationResult {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorResult` is never constructed
[INFO] [stdout]   --> src/sync/mod.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct ErrorResult {}
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_str`, `emoji`, `is_destructive`, and `requires_user_action` are never used
[INFO] [stdout]   --> src/sync/diff.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl DiffAction {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 31 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn emoji(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn is_destructive(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn requires_user_action(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/diff.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl FileDiff {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn download(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn conflict(path: String, source_info: FileMetadata, target_info: FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn create_dir(path: String, source_info: FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn move_file(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn calculate_similarity(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn is_similar(&self, threshold: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn should_retry(&self, max_retries: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn mark_retry(&mut self, error: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn mark_success(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn is_expired(&self, timeout: Duration) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn human_readable_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn to_json(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn from_json(json: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn is_encrypted(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn requires_decryption(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_hash` and `update_metadata_hash` are never used
[INFO] [stdout]    --> src/sync/diff.rs:483:12
[INFO] [stdout]     |
[INFO] [stdout] 408 | impl FileMetadata {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn calculate_hash(&mut self, _algorithm: ChecksumType) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn update_metadata_hash(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `hash_size` and `recommended` are never used
[INFO] [stdout]    --> src/sync/diff.rs:613:12
[INFO] [stdout]     |
[INFO] [stdout] 612 | impl ChecksumType {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 613 |     pub fn hash_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn recommended() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/sync/diff.rs:715:12
[INFO] [stdout]     |
[INFO] [stdout] 665 | impl DiffResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 715 |     pub fn sort_by_priority(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     pub fn filter_by_action(&self, action: DiffAction) -> Vec<&FileDiff> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     pub fn filter_by_tag(&self, tag: &str) -> Vec<&FileDiff> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 733 |     pub fn find_by_path(&self, path: &str) -> Option<&FileDiff> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 737 |     pub fn has_conflicts(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 741 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 745 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     pub fn to_json(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 760 |     pub fn to_csv(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `finalize` and `human_readable` are never used
[INFO] [stdout]    --> src/sync/diff.rs:845:12
[INFO] [stdout]     |
[INFO] [stdout] 808 | impl DiffStats {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 845 |     pub fn finalize(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 853 |     pub fn human_readable(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvDiff` is never constructed
[INFO] [stdout]    --> src/sync/diff.rs:865:8
[INFO] [stdout]     |
[INFO] [stdout] 865 | struct CsvDiff<'a> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiffDetector` is never constructed
[INFO] [stdout]    --> src/sync/diff.rs:878:12
[INFO] [stdout]     |
[INFO] [stdout] 878 | pub struct DiffDetector {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/sync/diff.rs:884:12
[INFO] [stdout]      |
[INFO] [stdout]  883 | impl DiffDetector {
[INFO] [stdout]      | ----------------- associated items in this implementation
[INFO] [stdout]  884 |     pub fn new(options: DiffOptions) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  891 |     pub async fn detect_changes(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  955 |     fn is_file_changed(&self, source: &FileMetadata, target: &FileMetadata) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  978 |     fn create_file_diff(&self, source: &FileMetadata, target: Option<&FileMetadata>) -> FileDiff {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  993 |     fn analyze_changes(&self, diff: &mut FileDiff) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1021 |     fn detect_moves(&self, result: &mut DiffResult) {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |     fn detect_conflicts(&self, result: &mut DiffResult) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1094 |     fn calculate_file_similarity(&self, file1: &FileMetadata, file2: &FileMetadata) -> f64 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1128 |     fn update_cache(&mut self, files: &[FileMetadata]) {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiffOptions` is never constructed
[INFO] [stdout]     --> src/sync/diff.rs:1138:12
[INFO] [stdout]      |
[INFO] [stdout] 1138 | pub struct DiffOptions {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `diff_cache` is never read
[INFO] [stdout]   --> src/sync/engine.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SyncEngine {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     diff_cache: DashMap<String, FileDiff>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync` is never used
[INFO] [stdout]    --> src/sync/engine.rs:116:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl SyncEngine {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn sync(&mut self, task: &SyncTask) -> Result<SyncReport, SyncError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `speed` is never read
[INFO] [stdout]    --> src/sync/engine.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | pub struct SyncProgress {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub speed: f64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TempStorageHealth` is more private than the item `StorageHealth::temp_storage`
[INFO] [stdout]    --> src/core/health.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub temp_storage: TempStorageHealth,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `StorageHealth::temp_storage` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TempStorageHealth` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/core/health.rs:18:1
[INFO] [stdout]     |
[INFO] [stdout]  18 | struct TempStorageHealth {}
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ErrorResult` is more private than the item `sync::VerificationResult::errors`
[INFO] [stdout]   --> src/sync/mod.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     pub errors: Vec<ErrorResult>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `sync::VerificationResult::errors` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ErrorResult` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/sync/mod.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct ErrorResult {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]   --> src/config/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl AccountConfig {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 38 |     pub fn validate(&self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]   --> src/config/mod.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | impl SyncTask {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 89 |     pub fn validate(&self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_account` and `update_task` are never used
[INFO] [stdout]    --> src/config/mod.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl ConfigManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn update_account(&mut self, account: AccountConfig) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn update_task(&mut self, task: SyncTask) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate`, `find_account`, `find_task`, `find_encryption_key`, and `find_schedule` are never used
[INFO] [stdout]    --> src/config/mod.rs:539:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl ConfigFile {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub fn validate(&self) -> Result<(), Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 577 |     pub fn find_account(&self, account_id: &str) -> Option<&AccountConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     pub fn find_task(&self, task_id: &str) -> Option<&SyncTask> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn find_encryption_key(&self, key_id: &str) -> Option<&EncryptionKey> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 589 |     pub fn find_schedule(&self, schedule_id: &str) -> Option<&ScheduleConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `backup_config`, `restore_config`, and `list_backups` are never used
[INFO] [stdout]   --> src/config/migrator.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ConfigMigrator {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn backup_config(config_path: &std::path::Path) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn list_backups(config_path: &std::path::Path) -> Result<Vec<String>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `key_path` is never read
[INFO] [stdout]   --> src/config/security.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SecurityManager {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 14 |     key_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigUtils` is never constructed
[INFO] [stdout]  --> src/config/utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ConfigUtils;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/config/utils.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ConfigUtils {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]   7 |     /// 生成默认配置文件
[INFO] [stdout]   8 |     pub fn generate_default_config() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  14 |     pub fn validate_config_syntax(content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |     pub fn find_config_files() -> Vec<std::path::PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn merge_configs(configs: &[super::ConfigFile]) -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn load_from_env() -> super::ConfigFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn generate_template(template_type: ConfigTemplate) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn diff_configs(config1: &super::ConfigFile, config2: &super::ConfigFile) -> ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigTemplate` is never used
[INFO] [stdout]    --> src/config/utils.rs:236:10
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub enum ConfigTemplate {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigDiff` is never constructed
[INFO] [stdout]    --> src/config/utils.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct ConfigDiff {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `has_changes` are never used
[INFO] [stdout]    --> src/config/utils.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl ConfigDiff {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 253 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn has_changes(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigValidatorImpl` is never constructed
[INFO] [stdout]  --> src/config/validator.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ConfigValidatorImpl;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_cron` is never used
[INFO] [stdout]    --> src/config/validator.rs:124:4
[INFO] [stdout]     |
[INFO] [stdout] 124 | fn is_valid_cron(expr: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditOperation` is never constructed
[INFO] [stdout]  --> src/core/audit.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AuditOperation {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OperationType` is never used
[INFO] [stdout]   --> src/core/audit.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum OperationType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditFilter` is never constructed
[INFO] [stdout]   --> src/core/audit.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct AuditFilter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseAuditLogger` is never constructed
[INFO] [stdout]   --> src/core/audit.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct DatabaseAuditLogger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/audit.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl DatabaseAuditLogger {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(db_path: &std::path::Path) -> Result<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheckerImpl` is never constructed
[INFO] [stdout]  --> src/core/health.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HealthCheckerImpl {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/health.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl HealthCheckerImpl {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(providers: HashMap<String, Box<dyn crate::providers::StorageProvider>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TempStorageHealth` is never constructed
[INFO] [stdout]   --> src/core/health.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct TempStorageHealth {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HealthStatus` is never used
[INFO] [stdout]    --> src/core/health.rs:112:10
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub enum HealthStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StorageHealth` is never constructed
[INFO] [stdout]    --> src/core/health.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct StorageHealth {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocalStorageHealth` is never constructed
[INFO] [stdout]    --> src/core/health.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct LocalStorageHealth {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatabaseHealth` is never constructed
[INFO] [stdout]    --> src/core/health.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct DatabaseHealth {}
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectivityStatus` is never constructed
[INFO] [stdout]    --> src/core/health.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct ConnectivityStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectivityTest` is never constructed
[INFO] [stdout]    --> src/core/health.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub struct ConnectivityTest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Protocol` is never used
[INFO] [stdout]    --> src/core/health.rs:169:10
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub enum Protocol {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `semaphore` is never read
[INFO] [stdout]   --> src/core/rate_limit.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TokenBucketRateLimiter {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryHandle` is never constructed
[INFO] [stdout]   --> src/core/resources.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MemoryHandle {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `id`, `size`, `allocated_at`, and `age` are never used
[INFO] [stdout]   --> src/core/resources.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MemoryHandle {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(id: String, size: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn id(&self) -> &str {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn size(&self) -> usize {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn allocated_at(&self) -> Instant {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn age(&self) -> Duration {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiskHandle` is never constructed
[INFO] [stdout]   --> src/core/resources.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct DiskHandle {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/core/resources.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl DiskHandle {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 55 |     pub fn new(id: String, path: std::path::PathBuf, size: u64, is_temporary: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn id(&self) -> &str {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn path(&self) -> &std::path::Path {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn size(&self) -> u64 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn is_temporary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn allocated_at(&self) -> Instant {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn age(&self) -> Duration {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn cleanup(&self) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceUsage` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct ResourceUsage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_from_system`, `is_overloaded`, and `to_string` are never used
[INFO] [stdout]    --> src/core/resources.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl ResourceUsage {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 128 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn update_from_system(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn is_overloaded(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceLimits` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct ResourceLimits {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default` and `validate` are never used
[INFO] [stdout]    --> src/core/resources.rs:251:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | impl ResourceLimits {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 251 |     pub fn default() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn validate(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceManagerImpl` is never constructed
[INFO] [stdout]    --> src/core/resources.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct ResourceManagerImpl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/resources.rs:306:12
[INFO] [stdout]     |
[INFO] [stdout] 305 | impl ResourceManagerImpl {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 306 |     pub fn new(limits: ResourceLimits) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn allocate_memory(&self, size: usize) -> Result<MemoryHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn allocate_disk(&self, size: u64) -> Result<DiskHandle> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn current_usage(&self) -> ResourceUsage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn set_limits(&self, limits: ResourceLimits) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub fn start_task(&self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn end_task(&self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     pub fn cleanup_old_resources(&self, max_age: Duration) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetry` is never constructed
[INFO] [stdout]  --> src/core/retry.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ExponentialBackoffRetry {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `builder` are never used
[INFO] [stdout]   --> src/core/retry.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ExponentialBackoffRetry {
[INFO] [stdout]    | ---------------------------- associated functions in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn builder() -> ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed
[INFO] [stdout]   --> src/core/retry.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ExponentialBackoffRetryBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/retry.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl ExponentialBackoffRetryBuilder {
[INFO] [stdout]     | ----------------------------------- associated items in this implementation
[INFO] [stdout]  73 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn max_attempts(mut self, attempts: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn initial_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn max_delay(mut self, delay: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn backoff_factor(mut self, factor: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn retryable_error(mut self, error_code: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn build(self) -> ExponentialBackoffRetry {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JitterRetry` is never constructed
[INFO] [stdout]    --> src/core/retry.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct JitterRetry {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_jitter` are never used
[INFO] [stdout]    --> src/core/retry.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl JitterRetry {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 126 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn add_jitter(&self, delay: Duration) -> Duration {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScheduledTask` is never constructed
[INFO] [stdout]   --> src/core/scheduler.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ScheduledTask {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl ScheduledTask {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  60 |     pub fn new(sync_task: &SyncTask, schedule: Schedule) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn calculate_next_run(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn update_statistics(&mut self, duration: Duration, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn should_run_now(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn get_status(&self) -> TaskStatus {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn get_health(&self) -> TaskHealth {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn format_next_run(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn enable(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn disable(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn retry(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskResult` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct TaskResult {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TaskStatus` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:233:10
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub enum TaskStatus {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TaskHealth` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub enum TaskHealth {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerManager` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct SchedulerManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:270:18
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl SchedulerManager {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 270 |     pub async fn new(sync_engine: SyncEngine) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub async fn add_task(&self, mut scheduled_task: ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     async fn schedule_job(&self, scheduled_task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     async fn execute_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub async fn start(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub async fn stop(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub async fn get_tasks(&self) -> Vec<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub async fn get_task(&self, task_id: &str) -> Option<ScheduledTask> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub async fn delete_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub async fn trigger_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 506 |     pub async fn pause_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     pub async fn resume_task(&self, task_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub async fn reschedule_all(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub async fn get_stats(&self) -> SchedulerStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub async fn cleanup_completed_tasks(&self, max_age_days: u32) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     pub async fn export_tasks(&self, format: ExportFormat) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 640 |     fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerStats` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:671:12
[INFO] [stdout]     |
[INFO] [stdout] 671 | pub struct SchedulerStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `success_rate`, and `health_score` are never used
[INFO] [stdout]    --> src/core/scheduler.rs:705:12
[INFO] [stdout]     |
[INFO] [stdout] 704 | impl SchedulerStats {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 705 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     pub fn success_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 733 |     pub fn health_score(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:751:10
[INFO] [stdout]     |
[INFO] [stdout] 751 | pub enum ExportFormat {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvTask` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:759:8
[INFO] [stdout]     |
[INFO] [stdout] 759 | struct CsvTask<'a> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskNotifier` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:773:12
[INFO] [stdout]     |
[INFO] [stdout] 773 | pub struct TaskNotifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/scheduler.rs:779:12
[INFO] [stdout]     |
[INFO] [stdout] 778 | impl TaskNotifier {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 779 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     pub async fn notify_task_start(&self, task: &ScheduledTask) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 799 |     pub async fn notify_task_complete(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub async fn notify_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     async fn send_notification(&self, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 852 |     async fn send_email(&self, _config: &EmailConfig, _message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     async fn send_webhook(&self, url: &str, message: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailConfig` is never constructed
[INFO] [stdout]    --> src/core/scheduler.rs:873:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | pub struct EmailConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_schedule_task` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:883:14
[INFO] [stdout]     |
[INFO] [stdout] 883 | pub async fn cmd_schedule_task(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmd_list_scheduled_tasks` is never used
[INFO] [stdout]    --> src/core/scheduler.rs:922:14
[INFO] [stdout]     |
[INFO] [stdout] 922 | pub async fn cmd_list_scheduled_tasks(scheduler: &SchedulerManager) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StateManager` is never used
[INFO] [stdout]   --> src/core/traits.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait StateManager: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ProgressReporter` is never used
[INFO] [stdout]   --> src/core/traits.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait ProgressReporter: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RetryStrategy` is never used
[INFO] [stdout]   --> src/core/traits.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub trait RetryStrategy: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current_rate` and `set_rate` are never used
[INFO] [stdout]   --> src/core/traits.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub trait RateLimiter: Send + Sync {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn current_rate(&self) -> f64; // 请求/秒
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 45 |     fn set_rate(&mut self, requests_per_second: f64);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ChecksumCalculator` is never used
[INFO] [stdout]   --> src/core/traits.rs:50:11
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub trait ChecksumCalculator: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DiffDetector` is never used
[INFO] [stdout]   --> src/core/traits.rs:57:11
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub trait DiffDetector: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FileFilter` is never used
[INFO] [stdout]   --> src/core/traits.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub trait FileFilter: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TaskScheduler` is never used
[INFO] [stdout]   --> src/core/traits.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub trait TaskScheduler: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Notifier` is never used
[INFO] [stdout]   --> src/core/traits.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Notifier: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AuditLogger` is never used
[INFO] [stdout]   --> src/core/traits.rs:92:11
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub trait AuditLogger: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ConfigValidator` is never used
[INFO] [stdout]    --> src/core/traits.rs:102:11
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub trait ConfigValidator: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `HealthChecker` is never used
[INFO] [stdout]    --> src/core/traits.rs:110:11
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub trait HealthChecker: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ResourceManager` is never used
[INFO] [stdout]    --> src/core/traits.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub trait ResourceManager: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Plugin` is never used
[INFO] [stdout]    --> src/core/traits.rs:126:11
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub trait Plugin: Send + Sync {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `HookHandler` is never used
[INFO] [stdout]    --> src/core/traits.rs:139:11
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub trait HookHandler: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransferStats` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct TransferStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadata` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub struct FileMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileChange` is never used
[INFO] [stdout]    --> src/core/traits.rs:178:10
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub enum FileChange {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiffOptions` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub struct DiffOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressUpdate` is never constructed
[INFO] [stdout]    --> src/core/traits.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub struct ProgressUpdate {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `algorithm` and `nonce` are never read
[INFO] [stdout]   --> src/encryption/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct EncryptionMetadata {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 17 |     pub algorithm: EncryptionAlgorithm,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 18 |     pub key_id: String,
[INFO] [stdout] 19 |     pub nonce: Vec<u8>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `key_size`, `iv_size`, `tag_size`, and `recommended_iv_mode` are never used
[INFO] [stdout]   --> src/encryption/types.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl EncryptionAlgorithm {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 19 |     pub fn key_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn iv_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn tag_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn recommended_iv_mode(&self) -> IvMode {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `requires_unique_per_file`, `generate_iv`, `generate_random_iv`, `generate_derived_iv`, `generate_counter_iv`, and `generate_file_offset_iv` are never used
[INFO] [stdout]    --> src/encryption/types.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl IvMode {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout]  75 |     pub fn requires_unique_per_file(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn generate_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn generate_random_iv(&self, size: usize) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     fn generate_derived_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn generate_counter_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn generate_file_offset_iv(&self, context: &IvContext) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IvContext` is never constructed
[INFO] [stdout]    --> src/encryption/types.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct IvContext {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum SyncError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 35 |     Validation(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     Timeout(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     RateLimitExceeded(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     AuthenticationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     PermissionDenied(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     FileNotFound(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     ResourceExhausted(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     Conflict(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     IntegrityCheckFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     RetryLimitExceeded(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     OperationCanceled,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     Unsupported(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FileNotFound`, `ReadFailed`, `ParseFailed`, and `MissingField` are never constructed
[INFO] [stdout]   --> src/error/mod.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum ConfigError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 76 |     #[error("Configuration file not found: {0}")]
[INFO] [stdout] 77 |     FileNotFound(PathBuf),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     ReadFailed(#[source] IoError),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     ParseFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     MissingField(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/error/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout]  96 | pub enum ProviderError {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 101 |     NotSupported(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     InvalidCredentials(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     QuotaExceeded(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     RateLimited(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     AuthFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     Timeout(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     PermissionDenied(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProviderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidKey`, `InvalidIV`, and `UnsupportedAlgorithm` are never constructed
[INFO] [stdout]    --> src/error/mod.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub enum EncryptionError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 143 |     InvalidKey(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     InvalidIV,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     UnsupportedAlgorithm(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EncryptionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Full`, `NotAvailable`, `Timeout`, `Corruption`, and `VersionMismatch` are never constructed
[INFO] [stdout]    --> src/error/mod.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub enum StorageError {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] 166 |     #[error("Storage full: {0}")]
[INFO] [stdout] 167 |     Full(String),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     NotAvailable(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     Timeout(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     Corruption(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     VersionMismatch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StorageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_retryable`, `is_fatal`, and `error_code` are never used
[INFO] [stdout]    --> src/error/mod.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl SyncError {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 184 |     pub fn is_retryable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn is_fatal(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn error_code(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ConfigResult` is never used
[INFO] [stdout]    --> src/error/mod.rs:239:10
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub type ConfigResult<T> = std::result::Result<T, ConfigError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ProviderResult` is never used
[INFO] [stdout]    --> src/error/mod.rs:240:10
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub type ProviderResult<T> = std::result::Result<T, ProviderError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `EncryptionResult` is never used
[INFO] [stdout]    --> src/error/mod.rs:241:10
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub type EncryptionResult<T> = std::result::Result<T, EncryptionError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadata` is never constructed
[INFO] [stdout]  --> src/plugins/mod.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct FileMetadata {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PluginHook` is never used
[INFO] [stdout]  --> src/plugins/hooks.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum PluginHook {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HookPriority` is never used
[INFO] [stdout]   --> src/plugins/hooks.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum HookPriority {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name`, `priority`, and `set_priority` are never used
[INFO] [stdout]   --> src/plugins/hooks.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl PluginHook {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 57 |     pub fn name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn priority(&self) -> HookPriority {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn set_priority(&mut self, priority: HookPriority) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HookContext` is never constructed
[INFO] [stdout]    --> src/plugins/hooks.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct HookContext {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/plugins/hooks.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl HookContext {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn with_task(mut self, task: SyncTask) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn with_report(mut self, report: SyncReport) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn with_file(mut self, file: FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn with_error(mut self, error: SyncError) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn set_custom_data(&mut self, key: String, value: serde_json::Value) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn get_custom_data(&self, key: &str) -> Option<&serde_json::Value> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `HookHandler` is never used
[INFO] [stdout]    --> src/plugins/hooks.rs:156:11
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub trait HookHandler: Send + Sync {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HookManager` is never constructed
[INFO] [stdout]  --> src/plugins/manager.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HookManager {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `register_handler`, `execute_hook`, and `all_hook_types` are never used
[INFO] [stdout]   --> src/plugins/manager.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl HookManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn register_handler(&mut self, handler: Box<dyn HookHandler>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub async fn execute_hook(&self, hook: PluginHook, context: &mut HookContext) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn all_hook_types() -> Vec<&'static str> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoggingPlugin` is never constructed
[INFO] [stdout]   --> src/plugins/manager.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct LoggingPlugin {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/plugins/manager.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl LoggingPlugin {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 71 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `verify`, `stat`, and `exists` are never used
[INFO] [stdout]   --> src/providers/mod.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub trait StorageProvider: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] 20 |     async fn verify(&self) -> Result<(), SyncError>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     async fn stat(&self, path: &str) -> Result<FileInfo, SyncError>;
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 32 |     async fn exists(&self, path: &str) -> Result<bool, SyncError>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes_uploaded`, `checksum`, and `elapsed_time` are never read
[INFO] [stdout]   --> src/providers/mod.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct UploadResult {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 46 |     pub bytes_uploaded: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     pub file_size: u64,
[INFO] [stdout] 48 |     pub checksum: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 49 |     pub elapsed_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UploadResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes_downloaded`, `checksum`, and `elapsed_time` are never read
[INFO] [stdout]   --> src/providers/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct DownloadResult {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 54 |     pub bytes_downloaded: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     pub file_size: u64,
[INFO] [stdout] 56 |     pub checksum: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 57 |     pub elapsed_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DownloadResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedProvider` is never constructed
[INFO] [stdout]   --> src/providers/mod.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct RateLimitedProvider<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/providers/mod.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T: StorageProvider> RateLimitedProvider<T> {
[INFO] [stdout]    | ----------------------------------------------- associated function in this implementation
[INFO] [stdout] 66 |     pub fn new(inner: T, config: RateLimitConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client`, `token`, `refresh_token`, and `rate_limiter` are never read
[INFO] [stdout]   --> src/providers/aliyun.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AliYunDriveProvider {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 14 |     client: reqwest::Client,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     token: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     refresh_token: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 17 |     rate_limiter: Arc<dyn RateLimiter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `refresh_token_if_needed` is never used
[INFO] [stdout]   --> src/providers/aliyun.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl AliYunDriveProvider {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     async fn refresh_token_if_needed(&mut self) -> Result<(), ProviderError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_html`, `generate_file_rows`, `generate_error_list`, and `generate_json` are never used
[INFO] [stdout]    --> src/report/mod.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl SyncReport {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn generate_html(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn generate_file_rows(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn generate_error_list(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn generate_json(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_str`, `emoji`, `is_completed`, `is_successful`, `can_retry`, and `is_active` are never used
[INFO] [stdout]    --> src/report/mod.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | impl SyncStatus {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 205 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn emoji(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn is_completed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn is_successful(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn can_retry(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/report/mod.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | impl FileSyncResult {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn from_diff(diff: &FileDiff, operation: FileOperation) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn mark_started(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn mark_completed(&mut self, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn mark_retry(&mut self, error: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn mark_verifying(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn mark_verified(&mut self, verified: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn add_warning(&mut self, warning: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn is_completed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     pub fn human_readable_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub fn human_readable_transferred(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn human_readable_speed(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn detailed_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn to_json(&self) -> Result<String, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub fn from_json(json: &str) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_str`, `emoji`, `is_completed`, `is_successful`, and `can_retry` are never used
[INFO] [stdout]    --> src/report/mod.rs:589:12
[INFO] [stdout]     |
[INFO] [stdout] 588 | impl FileSyncStatus {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 589 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 606 |     pub fn emoji(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     pub fn is_completed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 630 |     pub fn is_successful(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn can_retry(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_extension`, `from_path`, `from_metadata`, `from_mime_type`, `is_compressible`, and `is_binary` are never used
[INFO] [stdout]    --> src/report/mod.rs:771:12
[INFO] [stdout]     |
[INFO] [stdout] 770 | impl FileType {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 771 |     pub fn from_extension(extension: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 796 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 808 |     pub fn from_metadata(metadata: &crate::sync::diff::FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 822 |     pub fn from_mime_type(mime_type: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     pub fn is_compressible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 904 |     pub fn is_binary(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update_speed_metrics` are never used
[INFO] [stdout]     --> src/report/mod.rs:962:12
[INFO] [stdout]      |
[INFO] [stdout]  961 | impl SyncStatistics {
[INFO] [stdout]      | ------------------- associated items in this implementation
[INFO] [stdout]  962 |     pub fn new() -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1033 |     pub fn update_speed_metrics(&mut self, speed: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `success_rate` is never used
[INFO] [stdout]     --> src/report/mod.rs:1280:12
[INFO] [stdout]      |
[INFO] [stdout] 1243 | impl FileTypeStats {
[INFO] [stdout]      | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1280 |     pub fn success_rate(&self) -> f64 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VerificationResult` is never constructed
[INFO] [stdout]  --> src/sync/mod.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct VerificationResult {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorResult` is never constructed
[INFO] [stdout]   --> src/sync/mod.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct ErrorResult {}
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_str`, `emoji`, `is_destructive`, and `requires_user_action` are never used
[INFO] [stdout]   --> src/sync/diff.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl DiffAction {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 31 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn emoji(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn is_destructive(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn requires_user_action(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync/diff.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl FileDiff {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn download(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn conflict(path: String, source_info: FileMetadata, target_info: FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn create_dir(path: String, source_info: FileMetadata) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn move_file(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn calculate_similarity(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn is_similar(&self, threshold: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn should_retry(&self, max_retries: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn mark_retry(&mut self, error: Option<String>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn mark_success(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn is_expired(&self, timeout: Duration) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn human_readable_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn to_json(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn from_json(json: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn is_encrypted(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn requires_decryption(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_hash` and `update_metadata_hash` are never used
[INFO] [stdout]    --> src/sync/diff.rs:483:12
[INFO] [stdout]     |
[INFO] [stdout] 408 | impl FileMetadata {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn calculate_hash(&mut self, _algorithm: ChecksumType) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn update_metadata_hash(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `hash_size` and `recommended` are never used
[INFO] [stdout]    --> src/sync/diff.rs:613:12
[INFO] [stdout]     |
[INFO] [stdout] 612 | impl ChecksumType {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 613 |     pub fn hash_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn recommended() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/sync/diff.rs:715:12
[INFO] [stdout]     |
[INFO] [stdout] 665 | impl DiffResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 715 |     pub fn sort_by_priority(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     pub fn filter_by_action(&self, action: DiffAction) -> Vec<&FileDiff> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     pub fn filter_by_tag(&self, tag: &str) -> Vec<&FileDiff> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 733 |     pub fn find_by_path(&self, path: &str) -> Option<&FileDiff> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 737 |     pub fn has_conflicts(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 741 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     pub fn to_json(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 760 |     pub fn to_csv(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `finalize` and `human_readable` are never used
[INFO] [stdout]    --> src/sync/diff.rs:845:12
[INFO] [stdout]     |
[INFO] [stdout] 808 | impl DiffStats {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 845 |     pub fn finalize(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 853 |     pub fn human_readable(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvDiff` is never constructed
[INFO] [stdout]    --> src/sync/diff.rs:865:8
[INFO] [stdout]     |
[INFO] [stdout] 865 | struct CsvDiff<'a> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiffDetector` is never constructed
[INFO] [stdout]    --> src/sync/diff.rs:878:12
[INFO] [stdout]     |
[INFO] [stdout] 878 | pub struct DiffDetector {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/sync/diff.rs:884:12
[INFO] [stdout]      |
[INFO] [stdout]  883 | impl DiffDetector {
[INFO] [stdout]      | ----------------- associated items in this implementation
[INFO] [stdout]  884 |     pub fn new(options: DiffOptions) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  891 |     pub async fn detect_changes(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  955 |     fn is_file_changed(&self, source: &FileMetadata, target: &FileMetadata) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  978 |     fn create_file_diff(&self, source: &FileMetadata, target: Option<&FileMetadata>) -> FileDiff {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  993 |     fn analyze_changes(&self, diff: &mut FileDiff) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1021 |     fn detect_moves(&self, result: &mut DiffResult) {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |     fn detect_conflicts(&self, result: &mut DiffResult) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1094 |     fn calculate_file_similarity(&self, file1: &FileMetadata, file2: &FileMetadata) -> f64 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1128 |     fn update_cache(&mut self, files: &[FileMetadata]) {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiffOptions` is never constructed
[INFO] [stdout]     --> src/sync/diff.rs:1138:12
[INFO] [stdout]      |
[INFO] [stdout] 1138 | pub struct DiffOptions {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `diff_cache` is never read
[INFO] [stdout]   --> src/sync/engine.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SyncEngine {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     diff_cache: DashMap<String, FileDiff>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync` is never used
[INFO] [stdout]    --> src/sync/engine.rs:116:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl SyncEngine {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn sync(&mut self, task: &SyncTask) -> Result<SyncReport, SyncError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `speed` is never read
[INFO] [stdout]    --> src/sync/engine.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 386 | pub struct SyncProgress {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub speed: f64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 43s
[INFO] running `Command { std: "docker" "inspect" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36", kill_on_drop: false }`
[INFO] [stdout] a1330da4fcf22ced3a112c72dadab1558c4dfbc7119d4b98149505477c215e36
