[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#fa4dd1f19bfeb3fd235dc7f1406c42404436bef5 for pr-145108-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYunlongChen%2Fcloud_disk_sync" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-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-1-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/YunlongChen/cloud_disk_sync on toolchain fa4dd1f19bfeb3fd235dc7f1406c42404436bef5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "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" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c52786133606c99c1be059212037c3c1b52c69d319554488fd836254dbdf5f1a [INFO] running `Command { std: "docker" "start" "-a" "c52786133606c99c1be059212037c3c1b52c69d319554488fd836254dbdf5f1a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c52786133606c99c1be059212037c3c1b52c69d319554488fd836254dbdf5f1a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c52786133606c99c1be059212037c3c1b52c69d319554488fd836254dbdf5f1a", kill_on_drop: false }` [INFO] [stdout] c52786133606c99c1be059212037c3c1b52c69d319554488fd836254dbdf5f1a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 148aa734edff150022d393cfd8666e74f1fc8050881c0e869969e1a35e4eda48 [INFO] running `Command { std: "docker" "start" "-a" "148aa734edff150022d393cfd8666e74f1fc8050881c0e869969e1a35e4eda48", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.105 [INFO] [stderr] Compiling quote v1.0.43 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Checking foldhash v0.2.0 [INFO] [stderr] Compiling find-msvc-tools v0.1.7 [INFO] [stderr] Compiling libc v0.2.180 [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] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Checking linux-raw-sys v0.11.0 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Compiling cc v1.2.52 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Checking compact_str v0.9.0 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Compiling zmij v1.0.14 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling zerocopy v0.8.33 [INFO] [stderr] Checking iana-time-zone v0.1.64 [INFO] [stderr] Checking deranged v0.5.5 [INFO] [stderr] Checking siphasher v1.0.1 [INFO] [stderr] Checking time-core v0.1.7 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Checking phf_shared v0.12.1 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking line-clipping v0.3.5 [INFO] [stderr] Checking unicode-truncate v2.0.1 [INFO] [stderr] Compiling portable-atomic v1.13.0 [INFO] [stderr] Checking zeroize v1.8.2 [INFO] [stderr] Checking regex-syntax v0.8.8 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Compiling chrono-tz v0.10.4 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking socket2 v0.6.1 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking lru v0.16.3 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking hybrid-array v0.4.5 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking dirs-sys-next v0.1.2 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking dirs-next v2.0.0 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking console v0.16.2 [INFO] [stderr] Checking phf v0.12.1 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [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 digest v0.10.7 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Compiling tokio-cron-scheduler v0.15.1 [INFO] [stderr] Compiling unicase v2.9.0 [INFO] [stderr] Compiling rlimit v0.10.2 [INFO] [stderr] Checking iri-string v0.7.10 [INFO] [stderr] Checking polyval v0.6.2 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Checking ctr v0.9.2 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Checking term v0.7.0 [INFO] [stderr] Checking ghash v0.5.1 [INFO] [stderr] Checking uuid v1.19.0 [INFO] [stderr] Checking hashlink v0.11.0 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Checking is-terminal v0.4.17 [INFO] [stderr] Checking rtoolbox v0.0.3 [INFO] [stderr] Checking rustls-pki-types v1.13.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 regex-automata v0.4.13 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking fallible-iterator v0.3.0 [INFO] [stderr] Checking encode_unicode v1.0.0 [INFO] [stderr] Checking digest v0.11.0-rc.3 [INFO] [stderr] Checking fallible-streaming-iterator v0.1.9 [INFO] [stderr] Checking qrcode v0.14.1 [INFO] [stderr] Checking shell-words v1.1.1 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking winnow v0.6.26 [INFO] [stderr] Checking unit-prefix v0.5.2 [INFO] [stderr] Checking hmac v0.13.0-rc.2 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking aes-gcm v0.10.3 [INFO] [stderr] Checking pbkdf2 v0.13.0-rc.1 [INFO] [stderr] Checking indicatif v0.18.3 [INFO] [stderr] Checking dialoguer v0.12.0 [INFO] [stderr] Checking rpassword v7.4.0 [INFO] [stderr] Checking qr2term v0.3.3 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Checking dirs v6.0.0 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking headers-core v0.3.0 [INFO] [stderr] Checking fs2 v0.4.3 [INFO] [stderr] Checking sysinfo v0.37.2 [INFO] [stderr] Checking quick-xml v0.39.0 [INFO] [stderr] Checking headers v0.4.1 [INFO] [stderr] Checking prettytable v0.10.0 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand v0.9.2 [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 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] Compiling num-derive v0.4.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Checking tokio v1.49.0 [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 async-trait v0.1.89 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Checking thiserror v2.0.17 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking kasuari v0.4.11 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking clap v4.5.54 [INFO] [stderr] Checking clap_complete v4.5.65 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Checking strum v0.27.2 [INFO] [stderr] Checking ratatui-core v0.1.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling derive_builder_core v0.20.2 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [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 ratatui-widgets v0.3.0 [INFO] [stderr] Checking ratatui-crossterm v0.1.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Compiling derive_builder_macro v0.20.2 [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] Checking derive_builder v0.20.2 [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 idna_adapter v1.2.1 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking h2 v0.4.13 [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] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [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] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [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 `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, [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: 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, [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> { [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: 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> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [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 { [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: 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 { [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 { [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>) -> 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, [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn allocate_disk(&self, size: u64) -> Result { [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: 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: 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 { [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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | pub async fn get_task(&self, task_id: &str) -> Option { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | pub async fn export_tasks(&self, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 640 | fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result { [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 { [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: 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>) -> Self { [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: 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, [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 `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: 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: 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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn allocate_disk(&self, size: u64) -> Result { [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: 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: 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: 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: 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 { [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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | pub async fn get_task(&self, task_id: &str) -> Option { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | pub async fn export_tasks(&self, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 640 | fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result { [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: 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>>, [INFO] [stdout] 9 | hooks_by_priority: HashMap>>, [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: 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: 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: 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, [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>>, [INFO] [stdout] 9 | hooks_by_priority: HashMap>>, [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: 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: 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, [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, [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, [INFO] [stdout] | ^^^^^^^^^^ [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: 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: `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: 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: 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: 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, 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_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: 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 { [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: 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, 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: 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, 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 { [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: 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: 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] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [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] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [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, [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> { [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> { [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> { [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> { [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 { [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 { [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>) -> 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>, [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn allocate_disk(&self, size: u64) -> Result { [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 { [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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | pub async fn get_task(&self, task_id: &str) -> Option { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | pub async fn export_tasks(&self, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 640 | fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result { [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, [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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn generate_random_iv(&self, size: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn generate_derived_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn generate_counter_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | fn generate_file_offset_iv(&self, context: &IvContext) -> Vec { [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 = std::result::Result; [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 = std::result::Result; [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 = std::result::Result; [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) { [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; [INFO] [stdout] | ^^^^ [INFO] [stdout] 32 | async fn exists(&self, path: &str) -> Result; [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, [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, [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 { [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 RateLimitedProvider { [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, [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) { [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 { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 554 | pub fn from_json(json: &str) -> Result { [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) { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub fn from_json(json: &str) -> Result { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 760 | pub fn to_csv(&self) -> Result { [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, [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 { [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, [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> { [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> { [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> { [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> { [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 { [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 { [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>) -> 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, [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn allocate_disk(&self, size: u64) -> Result { [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 { [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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | pub async fn get_task(&self, task_id: &str) -> Option { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | pub async fn export_tasks(&self, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub async fn import_tasks(&self, data: &str, format: ExportFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 640 | fn tasks_to_csv(tasks: &[ScheduledTask]) -> Result { [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, [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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn generate_random_iv(&self, size: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn generate_derived_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn generate_counter_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | fn generate_file_offset_iv(&self, context: &IvContext) -> Vec { [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 = std::result::Result; [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 = std::result::Result; [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 = std::result::Result; [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) { [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; [INFO] [stdout] | ^^^^ [INFO] [stdout] 32 | async fn exists(&self, path: &str) -> Result; [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, [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, [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 { [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 RateLimitedProvider { [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, [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) { [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 { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 554 | pub fn from_json(json: &str) -> Result { [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) { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub fn from_json(json: &str) -> Result { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 760 | pub fn to_csv(&self) -> Result { [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, [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 { [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 21s [INFO] running `Command { std: "docker" "inspect" "148aa734edff150022d393cfd8666e74f1fc8050881c0e869969e1a35e4eda48", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "148aa734edff150022d393cfd8666e74f1fc8050881c0e869969e1a35e4eda48", kill_on_drop: false }` [INFO] [stdout] 148aa734edff150022d393cfd8666e74f1fc8050881c0e869969e1a35e4eda48