[INFO] fetching crate cloud-disk-sync 0.1.0... [INFO] checking cloud-disk-sync-0.1.0 against master#035b01b794602d5861daa43ac792f372f8981ed7 for 152214-denied [INFO] extracting crate cloud-disk-sync 0.1.0 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate cloud-disk-sync 0.1.0 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate cloud-disk-sync 0.1.0 [INFO] tweaked toml for crates.io crate cloud-disk-sync 0.1.0 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate cloud-disk-sync 0.1.0 on toolchain 035b01b794602d5861daa43ac792f372f8981ed7 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate cloud-disk-sync 0.1.0 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" "+035b01b794602d5861daa43ac792f372f8981ed7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: only one of `license` or `license-file` is necessary [INFO] [stderr] `license` should be used if the package license can be expressed with a standard SPDX expression. [INFO] [stderr] `license-file` should be used if the package uses a non-standard license. [INFO] [stderr] See https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields for more information. [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sys-info v0.9.1 [INFO] [stderr] Downloaded rtoolbox v0.0.3 [INFO] [stderr] Downloaded croner v3.0.1 [INFO] [stderr] Downloaded pbkdf2 v0.13.0-rc.1 [INFO] [stderr] Downloaded crypto-common v0.2.0-rc.4 [INFO] [stderr] Downloaded block-buffer v0.11.0-rc.5 [INFO] [stderr] Downloaded cron v0.15.0 [INFO] [stderr] Downloaded digest v0.11.0-rc.3 [INFO] [stderr] Downloaded hybrid-array v0.4.5 [INFO] [stderr] Downloaded hmac v0.13.0-rc.2 [INFO] [stderr] Downloaded prettytable v0.10.0 [INFO] [stderr] Downloaded rpassword v7.4.0 [INFO] [stderr] Downloaded tokio-cron-scheduler v0.15.1 [INFO] [stderr] Downloaded rusqlite v0.38.0 [INFO] [stderr] Downloaded rlimit v0.10.2 [INFO] [stderr] Downloaded hashlink v0.11.0 [INFO] [stderr] Downloaded libsqlite3-sys v0.36.0 [INFO] [stderr] Downloaded sqlite-wasm-rs v0.5.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 78e998d19a967502106a5abe41690f0958da61a05d8cba3fdc45379811e588da [INFO] running `Command { std: "docker" "start" "-a" "78e998d19a967502106a5abe41690f0958da61a05d8cba3fdc45379811e588da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "78e998d19a967502106a5abe41690f0958da61a05d8cba3fdc45379811e588da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "78e998d19a967502106a5abe41690f0958da61a05d8cba3fdc45379811e588da", kill_on_drop: false }` [INFO] [stdout] 78e998d19a967502106a5abe41690f0958da61a05d8cba3fdc45379811e588da [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4878ea0a11e3d391f561632799e89c93fd7fa321cd1511e4303c98dec964d6d5 [INFO] running `Command { std: "docker" "start" "-a" "4878ea0a11e3d391f561632799e89c93fd7fa321cd1511e4303c98dec964d6d5", kill_on_drop: false }` [INFO] [stderr] warning: only one of `license` or `license-file` is necessary [INFO] [stderr] `license` should be used if the package license can be expressed with a standard SPDX expression. [INFO] [stderr] `license-file` should be used if the package uses a non-standard license. [INFO] [stderr] See https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields for more information. [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling find-msvc-tools v0.1.7 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Compiling zerocopy v0.8.33 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking compact_str v0.9.0 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Compiling cc v1.2.52 [INFO] [stderr] Checking lru v0.16.3 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking deranged v0.5.5 [INFO] [stderr] Checking time-core v0.1.7 [INFO] [stderr] Checking num_threads v0.1.7 [INFO] [stderr] Checking phf_shared v0.12.1 [INFO] [stderr] Checking dirs-sys-next v0.1.2 [INFO] [stderr] Checking line-clipping v0.3.5 [INFO] [stderr] Compiling chrono-tz v0.10.4 [INFO] [stderr] Checking clap_builder v4.5.54 [INFO] [stderr] Checking dirs-next v2.0.0 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking phf v0.12.1 [INFO] [stderr] Compiling unicase v2.9.0 [INFO] [stderr] Compiling tokio-cron-scheduler v0.15.1 [INFO] [stderr] Checking iri-string v0.7.10 [INFO] [stderr] Checking unicode-truncate v2.0.1 [INFO] [stderr] Compiling rlimit v0.10.2 [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Checking term v0.7.0 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Checking rustls-pki-types v1.13.2 [INFO] [stderr] Checking uuid v1.19.0 [INFO] [stderr] Checking hashlink v0.11.0 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Checking hybrid-array v0.4.5 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking rtoolbox v0.0.3 [INFO] [stderr] Checking time v0.3.45 [INFO] [stderr] Compiling multer v2.1.0 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking encode_unicode v1.0.0 [INFO] [stderr] Checking fallible-streaming-iterator v0.1.9 [INFO] [stderr] Checking winnow v0.6.26 [INFO] [stderr] Checking fallible-iterator v0.3.0 [INFO] [stderr] Checking rpassword v7.4.0 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Compiling libsqlite3-sys v0.36.0 [INFO] [stderr] Checking crypto-common v0.2.0-rc.4 [INFO] [stderr] Checking block-buffer v0.11.0-rc.5 [INFO] [stderr] Checking polyval v0.6.2 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Compiling sys-info v0.9.1 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Checking ghash v0.5.1 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking ctr v0.9.2 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking prettytable v0.10.0 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Checking headers-core v0.2.0 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking sysinfo v0.37.2 [INFO] [stderr] Checking quick-xml v0.39.0 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Checking headers v0.3.9 [INFO] [stderr] Checking aes-gcm v0.10.3 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking digest v0.11.0-rc.3 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking dialoguer v0.12.0 [INFO] [stderr] Checking hmac v0.13.0-rc.2 [INFO] [stderr] Checking pbkdf2 v0.13.0-rc.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking rand v0.8.5 [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 displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.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 thiserror-impl v1.0.69 [INFO] [stderr] Compiling clap_derive v4.5.49 [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 futures-util v0.3.31 [INFO] [stderr] Checking crossterm v0.29.0 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Checking thiserror v2.0.17 [INFO] [stderr] Checking kasuari v0.4.11 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking clap v4.5.54 [INFO] [stderr] Checking clap_complete v4.5.65 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling derive_builder_core v0.20.2 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking strum v0.27.2 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking ratatui-core v0.1.0 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling derive_builder_macro v0.20.2 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking derive_builder v0.20.2 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking ratatui-widgets v0.3.0 [INFO] [stderr] Checking ratatui-crossterm v0.1.0 [INFO] [stderr] Checking croner v3.0.1 [INFO] [stderr] Checking cron v0.15.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking ratatui-macros v0.7.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking ratatui v0.30.0 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking tokio-tungstenite v0.21.0 [INFO] [stderr] Checking hyper-util v0.1.19 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking h2 v0.3.27 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.13.1 [INFO] [stderr] Checking rusqlite v0.38.0 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking cloud-disk-sync v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/config/migrator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use uuid::Uuid; [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: `sleep` [INFO] [stdout] --> src/core/scheduler.rs:13:29 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::time::{Duration, sleep}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::RngCore` [INFO] [stdout] --> src/encryption/types.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::RngCore; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::rngs::OsRng` [INFO] [stdout] --> src/encryption/types.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rand::rngs::OsRng; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Nonce` [INFO] [stdout] --> src/encryption/mod.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use aes_gcm::aead::{Aead, Nonce}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::SyncTask` [INFO] [stdout] --> src/report/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::config::SyncTask; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::SyncError` [INFO] [stdout] --> src/report/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::SyncError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ChecksumType` [INFO] [stdout] --> src/sync/engine.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::sync::diff::{ChecksumType, DiffAction, DiffResult, FileDiff}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `instrument` [INFO] [stdout] --> src/sync/engine.rs:14:35 [INFO] [stdout] | [INFO] [stdout] 14 | use tracing::{debug, error, info, instrument, warn}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng` [INFO] [stdout] --> src/core/retry.rs:134:29 [INFO] [stdout] | [INFO] [stdout] 134 | let mut rng = rand::thread_rng(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking warp v0.3.7 [INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range` [INFO] [stdout] --> src/core/retry.rs:135:26 [INFO] [stdout] | [INFO] [stdout] 135 | let jitter = rng.gen_range(-self.jitter_ratio..self.jitter_ratio); [INFO] [stdout] | ^^^^^^^^^ [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: variable does not need to be mutable [INFO] [stdout] --> src/core/health.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | let mut status = ConnectivityStatus { [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 variable: `internet_test` [INFO] [stdout] --> src/core/health.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | let internet_test = ConnectivityTest { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_internet_test` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `requests_per_second` [INFO] [stdout] --> src/core/rate_limit.rs:174:28 [INFO] [stdout] | [INFO] [stdout] 174 | fn set_rate(&mut self, requests_per_second: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requests_per_second` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | if let Some(limit) = self.memory_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:208:21 [INFO] [stdout] | [INFO] [stdout] 208 | if let Some(limit) = self.disk_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:214:21 [INFO] [stdout] | [INFO] [stdout] 214 | if let Some(limit) = self.file_descriptors_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> src/core/resources.rs:490:13 [INFO] [stdout] | [INFO] [stdout] 490 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/core/scheduler.rs:362:23 [INFO] [stdout] | [INFO] [stdout] 362 | .map_err(|e| SyncError::Unknown("".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sync_engine` [INFO] [stdout] --> src/core/scheduler.rs:368:9 [INFO] [stdout] | [INFO] [stdout] 368 | sync_engine: &Arc, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_engine` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `duration` [INFO] [stdout] --> src/core/scheduler.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | let duration = Utc::now() - start_time; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `success` [INFO] [stdout] --> src/core/scheduler.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let success = match result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> src/core/scheduler.rs:852:32 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/core/scheduler.rs:852:54 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/encryption/mod.rs:61:23 [INFO] [stdout] | [INFO] [stdout] 61 | .map_err(|e| EncryptionError::InvalidData)?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:79:28 [INFO] [stdout] | [INFO] [stdout] 79 | async fn delete(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:82:27 [INFO] [stdout] | [INFO] [stdout] 82 | async fn mkdir(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:94:28 [INFO] [stdout] | [INFO] [stdout] 94 | async fn exists(&self, path: &str) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `in_collection` [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_collection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `verification_rate` [INFO] [stdout] --> src/report/mod.rs:1115:13 [INFO] [stdout] | [INFO] [stdout] 1115 | let verification_rate = self.verification_success_rate(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verification_rate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/sync/diff.rs:484:38 [INFO] [stdout] | [INFO] [stdout] 484 | pub fn calculate_hash(&mut self, algorithm: ChecksumType) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_algorithm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:771:23 [INFO] [stdout] | [INFO] [stdout] 771 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:776:27 [INFO] [stdout] | [INFO] [stdout] 776 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `similarity` [INFO] [stdout] --> src/sync/diff.rs:1032:38 [INFO] [stdout] | [INFO] [stdout] 1032 | for (delete_idx, upload_idx, similarity) in potential_moves { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_similarity` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `d` is never read [INFO] [stdout] --> src/sync/engine.rs:809:37 [INFO] [stdout] | [INFO] [stdout] 809 | let mut d = FileDiff::unchanged( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 810 | | path.clone(), [INFO] [stdout] 811 | | crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)), [INFO] [stdout] 812 | | t.clone(), [INFO] [stdout] 813 | | ); [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 variable: `download_result` [INFO] [stdout] --> src/sync/engine.rs:879:13 [INFO] [stdout] | [INFO] [stdout] 879 | let download_result = source.download(&source_full_path, &temp_path).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_download_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `metadata` [INFO] [stdout] --> src/sync/engine.rs:882:30 [INFO] [stdout] | [INFO] [stdout] 882 | let (encrypted_data, metadata) = if let Some(enc_config) = &task.encryption { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_result` [INFO] [stdout] --> src/sync/engine.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 891 | let upload_result = if let Some(encrypted) = encrypted_data { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `source_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:910:9 [INFO] [stdout] | [INFO] [stdout] 910 | source_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_source_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:911:9 [INFO] [stdout] | [INFO] [stdout] 911 | target_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_diff` [INFO] [stdout] --> src/sync/engine.rs:912:9 [INFO] [stdout] | [INFO] [stdout] 912 | file_diff: &FileDiff, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_diff` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `task` [INFO] [stdout] --> src/sync/engine.rs:913:9 [INFO] [stdout] | [INFO] [stdout] 913 | task: &SyncTask, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_task` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/sync/engine.rs:914:9 [INFO] [stdout] | [INFO] [stdout] 914 | data: &String, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `reporter` [INFO] [stdout] --> src/sync/engine.rs:915:9 [INFO] [stdout] | [INFO] [stdout] 915 | reporter: &mut SyncReport, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reporter` [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: associated functions `backup_config`, `restore_config`, and `list_backups` are never used [INFO] [stdout] --> src/config/migrator.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl ConfigMigrator { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn backup_config(config_path: &std::path::Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | 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: 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:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | pub struct ResourceManagerImpl { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/resources.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl ResourceManagerImpl { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 309 | pub fn new(limits: ResourceLimits) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn allocate_memory(&self, size: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 354 | pub fn allocate_disk(&self, size: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 436 | pub fn current_usage(&self) -> ResourceUsage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn set_limits(&self, limits: ResourceLimits) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn start_task(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 485 | pub fn end_task(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | 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:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | 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:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ExponentialBackoffRetry { [INFO] [stdout] | ---------------------------- associated functions in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn builder() -> ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed [INFO] [stdout] --> src/core/retry.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/retry.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl ExponentialBackoffRetryBuilder { [INFO] [stdout] | ----------------------------------- associated items in this implementation [INFO] [stdout] 72 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn max_attempts(mut self, attempts: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn initial_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn max_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn backoff_factor(mut self, factor: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn retryable_error(mut self, error_code: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | 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:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | 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:125:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl JitterRetry { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 125 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | 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: multiple associated items are never used [INFO] [stdout] --> src/core/scheduler.rs:779:12 [INFO] [stdout] | [INFO] [stdout] 778 | impl TaskNotifier { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 779 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 787 | pub async fn notify_task_start(&self, task: &ScheduledTask) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 799 | pub async fn notify_task_complete( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 819 | pub async fn notify_task_failed( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 838 | async fn send_notification(&self, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 858 | async fn send_webhook(&self, url: &str, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EmailConfig` is never constructed [INFO] [stdout] --> src/core/scheduler.rs:873:12 [INFO] [stdout] | [INFO] [stdout] 873 | pub struct EmailConfig { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cmd_schedule_task` is never used [INFO] [stdout] --> src/core/scheduler.rs:883:14 [INFO] [stdout] | [INFO] [stdout] 883 | pub async fn cmd_schedule_task( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cmd_list_scheduled_tasks` is never used [INFO] [stdout] --> src/core/scheduler.rs:922:14 [INFO] [stdout] | [INFO] [stdout] 922 | pub async fn cmd_list_scheduled_tasks(scheduler: &SchedulerManager) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `hooks_by_priority` is never read [INFO] [stdout] --> src/plugins/manager.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct HookManager { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 8 | handlers: HashMap>>, [INFO] [stdout] 9 | hooks_by_priority: HashMap>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `all_hook_types` is never used [INFO] [stdout] --> src/plugins/manager.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl HookManager { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | fn all_hook_types() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `client`, `token`, `refresh_token`, and `rate_limiter` are never read [INFO] [stdout] --> src/providers/aliyun.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct AliYunDriveProvider { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 14 | client: reqwest::Client, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 15 | token: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 16 | refresh_token: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 17 | rate_limiter: Arc, [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: `uuid::Uuid` [INFO] [stdout] --> src/config/migrator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use uuid::Uuid; [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: `sleep` [INFO] [stdout] --> src/core/scheduler.rs:13:29 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::time::{Duration, sleep}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::RngCore` [INFO] [stdout] --> src/encryption/types.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::RngCore; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::rngs::OsRng` [INFO] [stdout] --> src/encryption/types.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rand::rngs::OsRng; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Nonce` [INFO] [stdout] --> src/encryption/mod.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use aes_gcm::aead::{Aead, Nonce}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::SyncTask` [INFO] [stdout] --> src/report/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::config::SyncTask; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::SyncError` [INFO] [stdout] --> src/report/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::SyncError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ChecksumType` [INFO] [stdout] --> src/sync/engine.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::sync::diff::{ChecksumType, DiffAction, DiffResult, FileDiff}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `instrument` [INFO] [stdout] --> src/sync/engine.rs:14:35 [INFO] [stdout] | [INFO] [stdout] 14 | use tracing::{debug, error, info, instrument, warn}; [INFO] [stdout] | ^^^^^^^^^^ [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: `generate_deep_structure` [INFO] [stdout] --> tests/consistency_tests.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | use common::{generate_deep_structure, start_mock_server_with_seed}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/report_tests.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | let mut report = SyncReport { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> tests/e2e_config_test.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng` [INFO] [stdout] --> src/core/retry.rs:134:29 [INFO] [stdout] | [INFO] [stdout] 134 | let mut rng = rand::thread_rng(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [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: `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: 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:137:14 [INFO] [stdout] | [INFO] [stdout] 137 | 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:154:14 [INFO] [stdout] | [INFO] [stdout] 154 | 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: function `generate_deep_structure` is never used [INFO] [stdout] --> tests/common/mod.rs:154:14 [INFO] [stdout] | [INFO] [stdout] 154 | 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: function `generate_test_files` is never used [INFO] [stdout] --> tests/common/mod.rs:137:14 [INFO] [stdout] | [INFO] [stdout] 137 | 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:154:14 [INFO] [stdout] | [INFO] [stdout] 154 | pub async fn generate_deep_structure(root: &Path, depth: usize, files_per_level: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `format` [INFO] [stdout] --> src/commands/report.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use prettytable::{Table, format, row}; [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: `uuid::Uuid` [INFO] [stdout] --> src/config/migrator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sleep` [INFO] [stdout] --> src/core/scheduler.rs:13:29 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::time::{Duration, sleep}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::RngCore` [INFO] [stdout] --> src/encryption/types.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::RngCore; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::rngs::OsRng` [INFO] [stdout] --> src/encryption/types.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rand::rngs::OsRng; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Nonce` [INFO] [stdout] --> src/encryption/mod.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use aes_gcm::aead::{Aead, Nonce}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::SyncTask` [INFO] [stdout] --> src/report/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::config::SyncTask; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::SyncError` [INFO] [stdout] --> src/report/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::SyncError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ChecksumType` [INFO] [stdout] --> src/sync/engine.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::sync::diff::{ChecksumType, DiffAction, DiffResult, FileDiff}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `instrument` [INFO] [stdout] --> src/sync/engine.rs:14:35 [INFO] [stdout] | [INFO] [stdout] 14 | use tracing::{debug, error, info, instrument, warn}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `format` [INFO] [stdout] --> src/commands/report.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use prettytable::{Table, format, row}; [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: `uuid::Uuid` [INFO] [stdout] --> src/config/migrator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sleep` [INFO] [stdout] --> src/core/scheduler.rs:13:29 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::time::{Duration, sleep}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::RngCore` [INFO] [stdout] --> src/encryption/types.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::RngCore; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::rngs::OsRng` [INFO] [stdout] --> src/encryption/types.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rand::rngs::OsRng; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Nonce` [INFO] [stdout] --> src/encryption/mod.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use aes_gcm::aead::{Aead, Nonce}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::SyncTask` [INFO] [stdout] --> src/report/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::config::SyncTask; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::SyncError` [INFO] [stdout] --> src/report/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::SyncError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ChecksumType` [INFO] [stdout] --> src/sync/engine.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::sync::diff::{ChecksumType, DiffAction, DiffResult, FileDiff}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `instrument` [INFO] [stdout] --> src/sync/engine.rs:14:35 [INFO] [stdout] | [INFO] [stdout] 14 | use tracing::{debug, error, info, instrument, warn}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng` [INFO] [stdout] --> src/core/retry.rs:134:29 [INFO] [stdout] | [INFO] [stdout] 134 | let mut rng = rand::thread_rng(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng` [INFO] [stdout] --> src/core/retry.rs:134:29 [INFO] [stdout] | [INFO] [stdout] 134 | let mut rng = rand::thread_rng(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range` [INFO] [stdout] --> src/core/retry.rs:135:26 [INFO] [stdout] | [INFO] [stdout] 135 | let jitter = rng.gen_range(-self.jitter_ratio..self.jitter_ratio); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range` [INFO] [stdout] --> src/core/retry.rs:135:26 [INFO] [stdout] | [INFO] [stdout] 135 | let jitter = rng.gen_range(-self.jitter_ratio..self.jitter_ratio); [INFO] [stdout] | ^^^^^^^^^ [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: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range` [INFO] [stdout] --> src/core/retry.rs:135:26 [INFO] [stdout] | [INFO] [stdout] 135 | let jitter = rng.gen_range(-self.jitter_ratio..self.jitter_ratio); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/health.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | let mut status = ConnectivityStatus { [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 variable: `internet_test` [INFO] [stdout] --> src/core/health.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | let internet_test = ConnectivityTest { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_internet_test` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `requests_per_second` [INFO] [stdout] --> src/core/rate_limit.rs:174:28 [INFO] [stdout] | [INFO] [stdout] 174 | fn set_rate(&mut self, requests_per_second: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requests_per_second` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | if let Some(limit) = self.memory_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:208:21 [INFO] [stdout] | [INFO] [stdout] 208 | if let Some(limit) = self.disk_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:214:21 [INFO] [stdout] | [INFO] [stdout] 214 | if let Some(limit) = self.file_descriptors_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> src/core/resources.rs:490:13 [INFO] [stdout] | [INFO] [stdout] 490 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/core/scheduler.rs:362:23 [INFO] [stdout] | [INFO] [stdout] 362 | .map_err(|e| SyncError::Unknown("".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sync_engine` [INFO] [stdout] --> src/core/scheduler.rs:368:9 [INFO] [stdout] | [INFO] [stdout] 368 | sync_engine: &Arc, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_engine` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `duration` [INFO] [stdout] --> src/core/scheduler.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | let duration = Utc::now() - start_time; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `success` [INFO] [stdout] --> src/core/scheduler.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let success = match result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> src/core/scheduler.rs:852:32 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/core/scheduler.rs:852:54 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/encryption/mod.rs:61:23 [INFO] [stdout] | [INFO] [stdout] 61 | .map_err(|e| EncryptionError::InvalidData)?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:79:28 [INFO] [stdout] | [INFO] [stdout] 79 | async fn delete(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:82:27 [INFO] [stdout] | [INFO] [stdout] 82 | async fn mkdir(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:94:28 [INFO] [stdout] | [INFO] [stdout] 94 | async fn exists(&self, path: &str) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [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: variable does not need to be mutable [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `in_collection` [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_collection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `d` is never read [INFO] [stdout] --> src/sync/engine.rs:809:37 [INFO] [stdout] | [INFO] [stdout] 809 | let mut d = FileDiff::unchanged( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 810 | | path.clone(), [INFO] [stdout] 811 | | crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)), [INFO] [stdout] 812 | | t.clone(), [INFO] [stdout] 813 | | ); [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: variable does not need to be mutable [INFO] [stdout] --> src/commands/key.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | let mut encryption_key = [0u8; 32]; [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 variable: `download_result` [INFO] [stdout] --> src/sync/engine.rs:879:13 [INFO] [stdout] | [INFO] [stdout] 879 | let download_result = source.download(&source_full_path, &temp_path).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_download_result` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `metadata` [INFO] [stdout] --> src/sync/engine.rs:882:30 [INFO] [stdout] | [INFO] [stdout] 882 | let (encrypted_data, metadata) = if let Some(enc_config) = &task.encryption { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_result` [INFO] [stdout] --> src/sync/engine.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 891 | let upload_result = if let Some(encrypted) = encrypted_data { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `source_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:910:9 [INFO] [stdout] | [INFO] [stdout] 910 | source_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_source_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:911:9 [INFO] [stdout] | [INFO] [stdout] 911 | target_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_diff` [INFO] [stdout] --> src/sync/engine.rs:912:9 [INFO] [stdout] | [INFO] [stdout] 912 | file_diff: &FileDiff, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_diff` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `task` [INFO] [stdout] --> src/sync/engine.rs:913:9 [INFO] [stdout] | [INFO] [stdout] 913 | task: &SyncTask, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_task` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/sync/engine.rs:914:9 [INFO] [stdout] | [INFO] [stdout] 914 | data: &String, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `reporter` [INFO] [stdout] --> src/sync/engine.rs:915:9 [INFO] [stdout] | [INFO] [stdout] 915 | reporter: &mut SyncReport, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reporter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/encryption/mod.rs:61:23 [INFO] [stdout] | [INFO] [stdout] 61 | .map_err(|e| EncryptionError::InvalidData)?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [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:809:37 [INFO] [stdout] | [INFO] [stdout] 809 | let mut d = FileDiff::unchanged( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 810 | | path.clone(), [INFO] [stdout] 811 | | crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)), [INFO] [stdout] 812 | | t.clone(), [INFO] [stdout] 813 | | ); [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: variable does not need to be mutable [INFO] [stdout] --> src/commands/key.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | let mut encryption_key = [0u8; 32]; [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 variable: `download_result` [INFO] [stdout] --> src/sync/engine.rs:879:13 [INFO] [stdout] | [INFO] [stdout] 879 | let download_result = source.download(&source_full_path, &temp_path).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_download_result` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `metadata` [INFO] [stdout] --> src/sync/engine.rs:882:30 [INFO] [stdout] | [INFO] [stdout] 882 | let (encrypted_data, metadata) = if let Some(enc_config) = &task.encryption { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_result` [INFO] [stdout] --> src/sync/engine.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 891 | let upload_result = if let Some(encrypted) = encrypted_data { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `source_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:910:9 [INFO] [stdout] | [INFO] [stdout] 910 | source_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_source_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:911:9 [INFO] [stdout] | [INFO] [stdout] 911 | target_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_diff` [INFO] [stdout] --> src/sync/engine.rs:912:9 [INFO] [stdout] | [INFO] [stdout] 912 | file_diff: &FileDiff, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_diff` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `task` [INFO] [stdout] --> src/sync/engine.rs:913:9 [INFO] [stdout] | [INFO] [stdout] 913 | task: &SyncTask, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_task` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/sync/engine.rs:914:9 [INFO] [stdout] | [INFO] [stdout] 914 | data: &String, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `reporter` [INFO] [stdout] --> src/sync/engine.rs:915:9 [INFO] [stdout] | [INFO] [stdout] 915 | reporter: &mut SyncReport, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reporter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/encryption/mod.rs:61:23 [INFO] [stdout] | [INFO] [stdout] 61 | .map_err(|e| EncryptionError::InvalidData)?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `verification_rate` [INFO] [stdout] --> src/report/mod.rs:1115:13 [INFO] [stdout] | [INFO] [stdout] 1115 | let verification_rate = self.verification_success_rate(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verification_rate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/sync/diff.rs:484:38 [INFO] [stdout] | [INFO] [stdout] 484 | pub fn calculate_hash(&mut self, algorithm: ChecksumType) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_algorithm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/health.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | let mut status = ConnectivityStatus { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `internet_test` [INFO] [stdout] --> src/core/health.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | let internet_test = ConnectivityTest { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_internet_test` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `requests_per_second` [INFO] [stdout] --> src/core/rate_limit.rs:174:28 [INFO] [stdout] | [INFO] [stdout] 174 | fn set_rate(&mut self, requests_per_second: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requests_per_second` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | if let Some(limit) = self.memory_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:208:21 [INFO] [stdout] | [INFO] [stdout] 208 | if let Some(limit) = self.disk_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:214:21 [INFO] [stdout] | [INFO] [stdout] 214 | if let Some(limit) = self.file_descriptors_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> src/core/resources.rs:490:13 [INFO] [stdout] | [INFO] [stdout] 490 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:771:23 [INFO] [stdout] | [INFO] [stdout] 771 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:776:27 [INFO] [stdout] | [INFO] [stdout] 776 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/core/scheduler.rs:362:23 [INFO] [stdout] | [INFO] [stdout] 362 | .map_err(|e| SyncError::Unknown("".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sync_engine` [INFO] [stdout] --> src/core/scheduler.rs:368:9 [INFO] [stdout] | [INFO] [stdout] 368 | sync_engine: &Arc, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_engine` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `duration` [INFO] [stdout] --> src/core/scheduler.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | let duration = Utc::now() - start_time; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `success` [INFO] [stdout] --> src/core/scheduler.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let success = match result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `similarity` [INFO] [stdout] --> src/sync/diff.rs:1032:38 [INFO] [stdout] | [INFO] [stdout] 1032 | for (delete_idx, upload_idx, similarity) in potential_moves { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_similarity` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> src/core/scheduler.rs:852:32 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/core/scheduler.rs:852:54 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/health.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | let mut status = ConnectivityStatus { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `internet_test` [INFO] [stdout] --> src/core/health.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | let internet_test = ConnectivityTest { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_internet_test` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `d` is never read [INFO] [stdout] --> src/sync/engine.rs:809:37 [INFO] [stdout] | [INFO] [stdout] 809 | let mut d = FileDiff::unchanged( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 810 | | path.clone(), [INFO] [stdout] 811 | | crate::sync::diff::FileMetadata::new(std::path::PathBuf::from(&path)), [INFO] [stdout] 812 | | t.clone(), [INFO] [stdout] 813 | | ); [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 variable: `requests_per_second` [INFO] [stdout] --> src/core/rate_limit.rs:174:28 [INFO] [stdout] | [INFO] [stdout] 174 | fn set_rate(&mut self, requests_per_second: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requests_per_second` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `download_result` [INFO] [stdout] --> src/sync/engine.rs:879:13 [INFO] [stdout] | [INFO] [stdout] 879 | let download_result = source.download(&source_full_path, &temp_path).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_download_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `metadata` [INFO] [stdout] --> src/sync/engine.rs:882:30 [INFO] [stdout] | [INFO] [stdout] 882 | let (encrypted_data, metadata) = if let Some(enc_config) = &task.encryption { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_result` [INFO] [stdout] --> src/sync/engine.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 891 | let upload_result = if let Some(encrypted) = encrypted_data { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `source_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:910:9 [INFO] [stdout] | [INFO] [stdout] 910 | source_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_source_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_storage_provider` [INFO] [stdout] --> src/sync/engine.rs:911:9 [INFO] [stdout] | [INFO] [stdout] 911 | target_storage_provider: &dyn StorageProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_storage_provider` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_diff` [INFO] [stdout] --> src/sync/engine.rs:912:9 [INFO] [stdout] | [INFO] [stdout] 912 | file_diff: &FileDiff, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_diff` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | if let Some(limit) = self.memory_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `task` [INFO] [stdout] --> src/sync/engine.rs:913:9 [INFO] [stdout] | [INFO] [stdout] 913 | task: &SyncTask, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_task` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/sync/engine.rs:914:9 [INFO] [stdout] | [INFO] [stdout] 914 | data: &String, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `reporter` [INFO] [stdout] --> src/sync/engine.rs:915:9 [INFO] [stdout] | [INFO] [stdout] 915 | reporter: &mut SyncReport, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reporter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:208:21 [INFO] [stdout] | [INFO] [stdout] 208 | if let Some(limit) = self.disk_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `limit` [INFO] [stdout] --> src/core/resources.rs:214:21 [INFO] [stdout] | [INFO] [stdout] 214 | if let Some(limit) = self.file_descriptors_limit { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit` [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: associated functions `backup_config`, `restore_config`, and `list_backups` are never used [INFO] [stdout] --> src/config/migrator.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl ConfigMigrator { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn backup_config(config_path: &std::path::Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | 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: unused variable: `now` [INFO] [stdout] --> src/core/resources.rs:490:13 [INFO] [stdout] | [INFO] [stdout] 490 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [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:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | pub struct ResourceManagerImpl { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/resources.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl ResourceManagerImpl { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 309 | pub fn new(limits: ResourceLimits) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn allocate_memory(&self, size: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 354 | pub fn allocate_disk(&self, size: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 436 | pub fn current_usage(&self) -> ResourceUsage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn set_limits(&self, limits: ResourceLimits) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn start_task(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 485 | pub fn end_task(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | 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:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | 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:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ExponentialBackoffRetry { [INFO] [stdout] | ---------------------------- associated functions in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn builder() -> ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed [INFO] [stdout] --> src/core/retry.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/retry.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl ExponentialBackoffRetryBuilder { [INFO] [stdout] | ----------------------------------- associated items in this implementation [INFO] [stdout] 72 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn max_attempts(mut self, attempts: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn initial_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn max_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn backoff_factor(mut self, factor: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn retryable_error(mut self, error_code: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | 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:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | 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:125:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl JitterRetry { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 125 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | 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: multiple associated items are never used [INFO] [stdout] --> src/core/scheduler.rs:779:12 [INFO] [stdout] | [INFO] [stdout] 778 | impl TaskNotifier { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 779 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 787 | pub async fn notify_task_start(&self, task: &ScheduledTask) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 799 | pub async fn notify_task_complete( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 819 | pub async fn notify_task_failed( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 838 | async fn send_notification(&self, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 858 | async fn send_webhook(&self, url: &str, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EmailConfig` is never constructed [INFO] [stdout] --> src/core/scheduler.rs:873:12 [INFO] [stdout] | [INFO] [stdout] 873 | pub struct EmailConfig { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cmd_schedule_task` is never used [INFO] [stdout] --> src/core/scheduler.rs:883:14 [INFO] [stdout] | [INFO] [stdout] 883 | pub async fn cmd_schedule_task( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cmd_list_scheduled_tasks` is never used [INFO] [stdout] --> src/core/scheduler.rs:922:14 [INFO] [stdout] | [INFO] [stdout] 922 | pub async fn cmd_list_scheduled_tasks(scheduler: &SchedulerManager) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `hooks_by_priority` is never read [INFO] [stdout] --> src/plugins/manager.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct HookManager { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 8 | handlers: HashMap>>, [INFO] [stdout] 9 | hooks_by_priority: HashMap>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `all_hook_types` is never used [INFO] [stdout] --> src/plugins/manager.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl HookManager { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | fn all_hook_types() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `client`, `token`, `refresh_token`, and `rate_limiter` are never read [INFO] [stdout] --> src/providers/aliyun.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct AliYunDriveProvider { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 14 | client: reqwest::Client, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 15 | token: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 16 | refresh_token: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 17 | rate_limiter: Arc, [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 variable: `e` [INFO] [stdout] --> src/core/scheduler.rs:362:23 [INFO] [stdout] | [INFO] [stdout] 362 | .map_err(|e| SyncError::Unknown("".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sync_engine` [INFO] [stdout] --> src/core/scheduler.rs:368:9 [INFO] [stdout] | [INFO] [stdout] 368 | sync_engine: &Arc, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sync_engine` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `duration` [INFO] [stdout] --> src/core/scheduler.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | let duration = Utc::now() - start_time; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `success` [INFO] [stdout] --> src/core/scheduler.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let success = match result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> src/core/scheduler.rs:852:32 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/core/scheduler.rs:852:54 [INFO] [stdout] | [INFO] [stdout] 852 | async fn send_email(&self, config: &EmailConfig, message: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:79:28 [INFO] [stdout] | [INFO] [stdout] 79 | async fn delete(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:82:27 [INFO] [stdout] | [INFO] [stdout] 82 | async fn mkdir(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:94:28 [INFO] [stdout] | [INFO] [stdout] 94 | async fn exists(&self, path: &str) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `in_collection` [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_collection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_path` [INFO] [stdout] --> src/providers/aliyun.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | remote_path: &str, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_path` [INFO] [stdout] --> src/providers/aliyun.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | local_path: &Path, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:79:28 [INFO] [stdout] | [INFO] [stdout] 79 | async fn delete(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:82:27 [INFO] [stdout] | [INFO] [stdout] 82 | async fn mkdir(&self, path: &str) -> Result<(), SyncError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/providers/aliyun.rs:94:28 [INFO] [stdout] | [INFO] [stdout] 94 | async fn exists(&self, path: &str) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `in_collection` [INFO] [stdout] --> src/providers/webdav.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut in_collection = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_collection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `verification_rate` [INFO] [stdout] --> src/report/mod.rs:1115:13 [INFO] [stdout] | [INFO] [stdout] 1115 | let verification_rate = self.verification_success_rate(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verification_rate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/sync/diff.rs:484:38 [INFO] [stdout] | [INFO] [stdout] 484 | pub fn calculate_hash(&mut self, algorithm: ChecksumType) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_algorithm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:771:23 [INFO] [stdout] | [INFO] [stdout] 771 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:776:27 [INFO] [stdout] | [INFO] [stdout] 776 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `similarity` [INFO] [stdout] --> src/sync/diff.rs:1032:38 [INFO] [stdout] | [INFO] [stdout] 1032 | for (delete_idx, upload_idx, similarity) in potential_moves { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_similarity` [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: associated items `new`, `validate`, `find_account`, `find_task`, `find_encryption_key`, and `find_schedule` are never used [INFO] [stdout] --> src/config/mod.rs:519:12 [INFO] [stdout] | [INFO] [stdout] 518 | impl ConfigFile { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 519 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 533 | pub fn validate(&self) -> Result<(), Vec> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 571 | pub fn find_account(&self, account_id: &str) -> Option<&AccountConfig> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 575 | pub fn find_task(&self, task_id: &str) -> Option<&SyncTask> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 579 | pub fn find_encryption_key(&self, key_id: &str) -> Option<&EncryptionKey> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 583 | 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:46:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl ConfigMigrator { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn backup_config(config_path: &std::path::Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | 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] 200 | pub fn is_overloaded(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | 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:241:12 [INFO] [stdout] | [INFO] [stdout] 241 | 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:254:12 [INFO] [stdout] | [INFO] [stdout] 253 | impl ResourceLimits { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 254 | pub fn default() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | 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:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | pub struct ResourceManagerImpl { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/resources.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl ResourceManagerImpl { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 309 | pub fn new(limits: ResourceLimits) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn allocate_memory(&self, size: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 354 | pub fn allocate_disk(&self, size: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 436 | pub fn current_usage(&self) -> ResourceUsage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn set_limits(&self, limits: ResourceLimits) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn start_task(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 485 | pub fn end_task(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | 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:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | 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:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ExponentialBackoffRetry { [INFO] [stdout] | ---------------------------- associated functions in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn builder() -> ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed [INFO] [stdout] --> src/core/retry.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/retry.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl ExponentialBackoffRetryBuilder { [INFO] [stdout] | ----------------------------------- associated items in this implementation [INFO] [stdout] 72 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn max_attempts(mut self, attempts: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn initial_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn max_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn backoff_factor(mut self, factor: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn retryable_error(mut self, error_code: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | 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:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | 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:125:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl JitterRetry { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 125 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | 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:93:18 [INFO] [stdout] | [INFO] [stdout] 23 | impl EncryptionManager { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | 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:21:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl EncryptionAlgorithm { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] 21 | pub fn key_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn iv_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn tag_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | 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:77:12 [INFO] [stdout] | [INFO] [stdout] 76 | impl IvMode { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] 77 | pub fn requires_unique_per_file(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn generate_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn generate_random_iv(&self, size: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | fn generate_derived_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn generate_counter_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | 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:154:12 [INFO] [stdout] | [INFO] [stdout] 154 | 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`, `MissingField`, and `Invalid` 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] 89 | Invalid(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:140:5 [INFO] [stdout] | [INFO] [stdout] 135 | pub enum EncryptionError { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 140 | InvalidKey(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | DecryptionFailed(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | InvalidIV, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | IntegrityCheckFailed, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | 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:164:5 [INFO] [stdout] | [INFO] [stdout] 162 | pub enum StorageError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 163 | #[error("Storage full: {0}")] [INFO] [stdout] 164 | Full(String), [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | NotAvailable(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | Timeout(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | Corruption(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | 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:181:12 [INFO] [stdout] | [INFO] [stdout] 180 | impl SyncError { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 181 | pub fn is_retryable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn is_fatal(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | 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:236:10 [INFO] [stdout] | [INFO] [stdout] 236 | 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:237:10 [INFO] [stdout] | [INFO] [stdout] 237 | 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:238:10 [INFO] [stdout] | [INFO] [stdout] 238 | 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:110:12 [INFO] [stdout] | [INFO] [stdout] 109 | impl HookContext { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 110 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn with_task(mut self, task: SyncTask) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn with_report(mut self, report: SyncReport) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn with_file(mut self, file: FileMetadata) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn with_error(mut self, error: SyncError) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn set_custom_data(&mut self, key: String, value: serde_json::Value) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | 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:150:11 [INFO] [stdout] | [INFO] [stdout] 150 | 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:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl HookManager { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 13 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn register_handler(&mut self, handler: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub async fn execute_hook(&self, hook: PluginHook, context: &mut HookContext) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | 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:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct LoggingPlugin { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/plugins/manager.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl LoggingPlugin { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 62 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `stat` and `exists` are never used [INFO] [stdout] --> src/providers/mod.rs:28:14 [INFO] [stdout] | [INFO] [stdout] 17 | pub trait StorageProvider: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 28 | async fn stat(&self, path: &str) -> Result; [INFO] [stdout] | ^^^^ [INFO] [stdout] 29 | async fn exists(&self, path: &str) -> Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_provider` is never used [INFO] [stdout] --> src/providers/mod.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 32 | pub async fn create_provider( [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:59:9 [INFO] [stdout] | [INFO] [stdout] 58 | pub struct UploadResult { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 59 | pub bytes_uploaded: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 60 | pub file_size: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 61 | pub checksum: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 62 | 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:67:9 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct DownloadResult { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 67 | pub bytes_downloaded: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 68 | pub file_size: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 69 | pub checksum: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 70 | 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:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct RateLimitedProvider { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/providers/mod.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 78 | impl RateLimitedProvider { [INFO] [stdout] | ----------------------------------------------- associated function in this implementation [INFO] [stdout] 79 | 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:74:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl SyncReport { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn generate_html(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | fn generate_file_rows(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | fn generate_error_list(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | 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:207:12 [INFO] [stdout] | [INFO] [stdout] 206 | impl SyncStatus { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 207 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub fn emoji(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn is_successful(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn can_retry(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 252 | 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:346:12 [INFO] [stdout] | [INFO] [stdout] 315 | impl FileSyncResult { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 346 | pub fn from_diff(diff: &FileDiff, operation: FileOperation) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | pub fn mark_started(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 385 | pub fn mark_completed(&mut self, success: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn mark_retry(&mut self, error: Option) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | pub fn mark_verifying(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 417 | pub fn mark_verified(&mut self, verified: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 426 | pub fn add_warning(&mut self, warning: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 438 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 447 | pub fn human_readable_size(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | pub fn human_readable_transferred(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn human_readable_speed(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 467 | pub fn summary(&self) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 487 | pub fn detailed_info(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 554 | pub fn to_json(&self) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | 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:593:12 [INFO] [stdout] | [INFO] [stdout] 592 | impl FileSyncStatus { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 593 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 610 | pub fn emoji(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 627 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 634 | pub fn is_successful(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 638 | 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:775:12 [INFO] [stdout] | [INFO] [stdout] 774 | impl FileType { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 775 | pub fn from_extension(extension: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 800 | pub fn from_path(path: &Path) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 812 | pub fn from_metadata(metadata: &crate::sync::diff::FileMetadata) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 826 | pub fn from_mime_type(mime_type: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 895 | pub fn is_compressible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 908 | 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:966:12 [INFO] [stdout] | [INFO] [stdout] 965 | impl SyncStatistics { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 966 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1040 | 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:1281:12 [INFO] [stdout] | [INFO] [stdout] 1244 | impl FileTypeStats { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 1281 | 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] 366 | pub fn from_json(json: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 370 | pub fn is_encrypted(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | 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:484:12 [INFO] [stdout] | [INFO] [stdout] 409 | impl FileMetadata { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 484 | pub fn calculate_hash(&mut self, algorithm: ChecksumType) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 512 | 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:614:12 [INFO] [stdout] | [INFO] [stdout] 613 | impl ChecksumType { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 614 | pub fn hash_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | pub fn recommended() -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/sync/diff.rs:710:12 [INFO] [stdout] | [INFO] [stdout] 660 | impl DiffResult { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 710 | pub fn sort_by_priority(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 714 | pub fn filter_by_action(&self, action: DiffAction) -> Vec<&FileDiff> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 721 | pub fn filter_by_tag(&self, tag: &str) -> Vec<&FileDiff> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 728 | pub fn find_by_path(&self, path: &str) -> Option<&FileDiff> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 732 | pub fn has_conflicts(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 736 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 740 | pub fn summary(&self) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 751 | pub fn to_json(&self) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 756 | 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:835:12 [INFO] [stdout] | [INFO] [stdout] 798 | impl DiffStats { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 835 | pub fn finalize(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 843 | 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:855:8 [INFO] [stdout] | [INFO] [stdout] 855 | struct CsvDiff<'a> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DiffDetector` is never constructed [INFO] [stdout] --> src/sync/diff.rs:868:12 [INFO] [stdout] | [INFO] [stdout] 868 | pub struct DiffDetector { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/sync/diff.rs:874:12 [INFO] [stdout] | [INFO] [stdout] 873 | impl DiffDetector { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 874 | pub fn new(options: DiffOptions) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 881 | pub async fn detect_changes( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 945 | fn is_file_changed(&self, source: &FileMetadata, target: &FileMetadata) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 968 | fn create_file_diff(&self, source: &FileMetadata, target: Option<&FileMetadata>) -> FileDiff { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 983 | fn analyze_changes(&self, diff: &mut FileDiff) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1011 | fn detect_moves(&self, result: &mut DiffResult) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1050 | fn detect_conflicts(&self, result: &mut DiffResult) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1084 | fn calculate_file_similarity(&self, file1: &FileMetadata, file2: &FileMetadata) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1118 | 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:1128:12 [INFO] [stdout] | [INFO] [stdout] 1128 | 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: unused variable: `verification_rate` [INFO] [stdout] --> src/report/mod.rs:1115:13 [INFO] [stdout] | [INFO] [stdout] 1115 | let verification_rate = self.verification_success_rate(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verification_rate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/sync/diff.rs:484:38 [INFO] [stdout] | [INFO] [stdout] 484 | pub fn calculate_hash(&mut self, algorithm: ChecksumType) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_algorithm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:771:23 [INFO] [stdout] | [INFO] [stdout] 771 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/sync/diff.rs:776:27 [INFO] [stdout] | [INFO] [stdout] 776 | .map_err(|e| SyncError::Unsupported("转换异常".into()))?, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `similarity` [INFO] [stdout] --> src/sync/diff.rs:1032:38 [INFO] [stdout] | [INFO] [stdout] 1032 | for (delete_idx, upload_idx, similarity) in potential_moves { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_similarity` [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: associated items `new`, `validate`, `find_account`, `find_task`, `find_encryption_key`, and `find_schedule` are never used [INFO] [stdout] --> src/config/mod.rs:519:12 [INFO] [stdout] | [INFO] [stdout] 518 | impl ConfigFile { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 519 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 533 | pub fn validate(&self) -> Result<(), Vec> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 571 | pub fn find_account(&self, account_id: &str) -> Option<&AccountConfig> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 575 | pub fn find_task(&self, task_id: &str) -> Option<&SyncTask> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 579 | pub fn find_encryption_key(&self, key_id: &str) -> Option<&EncryptionKey> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 583 | 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:46:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl ConfigMigrator { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn backup_config(config_path: &std::path::Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn restore_config(config_path: &std::path::Path, backup_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | 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] 200 | pub fn is_overloaded(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | 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:241:12 [INFO] [stdout] | [INFO] [stdout] 241 | 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:254:12 [INFO] [stdout] | [INFO] [stdout] 253 | impl ResourceLimits { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 254 | pub fn default() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | 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:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | pub struct ResourceManagerImpl { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/resources.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl ResourceManagerImpl { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 309 | pub fn new(limits: ResourceLimits) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn allocate_memory(&self, size: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 354 | pub fn allocate_disk(&self, size: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | pub fn deallocate_memory(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn deallocate_disk(&self, handle_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 436 | pub fn current_usage(&self) -> ResourceUsage { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn set_limits(&self, limits: ResourceLimits) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn start_task(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 485 | pub fn end_task(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | 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:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | 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:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ExponentialBackoffRetry { [INFO] [stdout] | ---------------------------- associated functions in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn builder() -> ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExponentialBackoffRetryBuilder` is never constructed [INFO] [stdout] --> src/core/retry.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct ExponentialBackoffRetryBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/retry.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl ExponentialBackoffRetryBuilder { [INFO] [stdout] | ----------------------------------- associated items in this implementation [INFO] [stdout] 72 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn max_attempts(mut self, attempts: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn initial_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn max_delay(mut self, delay: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn backoff_factor(mut self, factor: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn retryable_error(mut self, error_code: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | 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:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | 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:125:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl JitterRetry { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 125 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | 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:21:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl EncryptionAlgorithm { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] 21 | pub fn key_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn iv_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn tag_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | 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:77:12 [INFO] [stdout] | [INFO] [stdout] 76 | impl IvMode { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] 77 | pub fn requires_unique_per_file(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn generate_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn generate_random_iv(&self, size: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | fn generate_derived_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn generate_counter_iv(&self, context: &IvContext) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | 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:154:12 [INFO] [stdout] | [INFO] [stdout] 154 | 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`, `MissingField`, and `Invalid` 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] 89 | Invalid(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:140:5 [INFO] [stdout] | [INFO] [stdout] 135 | pub enum EncryptionError { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 140 | InvalidKey(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | InvalidIV, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | 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:164:5 [INFO] [stdout] | [INFO] [stdout] 162 | pub enum StorageError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 163 | #[error("Storage full: {0}")] [INFO] [stdout] 164 | Full(String), [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | NotAvailable(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | Timeout(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | Corruption(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | 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:181:12 [INFO] [stdout] | [INFO] [stdout] 180 | impl SyncError { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 181 | pub fn is_retryable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn is_fatal(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | 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:236:10 [INFO] [stdout] | [INFO] [stdout] 236 | 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:237:10 [INFO] [stdout] | [INFO] [stdout] 237 | 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:238:10 [INFO] [stdout] | [INFO] [stdout] 238 | 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:110:12 [INFO] [stdout] | [INFO] [stdout] 109 | impl HookContext { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 110 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn with_task(mut self, task: SyncTask) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn with_report(mut self, report: SyncReport) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn with_file(mut self, file: FileMetadata) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn with_error(mut self, error: SyncError) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn set_custom_data(&mut self, key: String, value: serde_json::Value) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | 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:150:11 [INFO] [stdout] | [INFO] [stdout] 150 | 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:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl HookManager { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 13 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn register_handler(&mut self, handler: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub async fn execute_hook(&self, hook: PluginHook, context: &mut HookContext) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | 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:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct LoggingPlugin { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/plugins/manager.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl LoggingPlugin { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 62 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `stat` and `exists` are never used [INFO] [stdout] --> src/providers/mod.rs:28:14 [INFO] [stdout] | [INFO] [stdout] 17 | pub trait StorageProvider: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 28 | async fn stat(&self, path: &str) -> Result; [INFO] [stdout] | ^^^^ [INFO] [stdout] 29 | async fn exists(&self, path: &str) -> Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_provider` is never used [INFO] [stdout] --> src/providers/mod.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 32 | pub async fn create_provider( [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:59:9 [INFO] [stdout] | [INFO] [stdout] 58 | pub struct UploadResult { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 59 | pub bytes_uploaded: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 60 | pub file_size: u64, [INFO] [stdout] 61 | pub checksum: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 62 | 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:67:9 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct DownloadResult { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 67 | pub bytes_downloaded: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 68 | pub file_size: u64, [INFO] [stdout] 69 | pub checksum: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 70 | 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:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct RateLimitedProvider { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/providers/mod.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 78 | impl RateLimitedProvider { [INFO] [stdout] | ----------------------------------------------- associated function in this implementation [INFO] [stdout] 79 | 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:74:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl SyncReport { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn generate_html(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | fn generate_file_rows(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | fn generate_error_list(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | 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:207:12 [INFO] [stdout] | [INFO] [stdout] 206 | impl SyncStatus { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 207 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub fn emoji(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn is_successful(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn can_retry(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 252 | 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:346:12 [INFO] [stdout] | [INFO] [stdout] 315 | impl FileSyncResult { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 346 | pub fn from_diff(diff: &FileDiff, operation: FileOperation) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | pub fn mark_started(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 385 | pub fn mark_completed(&mut self, success: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn mark_retry(&mut self, error: Option) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | pub fn mark_verifying(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 417 | pub fn mark_verified(&mut self, verified: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 426 | pub fn add_warning(&mut self, warning: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 438 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 447 | pub fn human_readable_size(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | pub fn human_readable_transferred(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn human_readable_speed(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 467 | pub fn summary(&self) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 487 | pub fn detailed_info(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 554 | pub fn to_json(&self) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | 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:593:12 [INFO] [stdout] | [INFO] [stdout] 592 | impl FileSyncStatus { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 593 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 610 | pub fn emoji(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 627 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 634 | pub fn is_successful(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 638 | 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:775:12 [INFO] [stdout] | [INFO] [stdout] 774 | impl FileType { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 775 | pub fn from_extension(extension: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 800 | pub fn from_path(path: &Path) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 812 | pub fn from_metadata(metadata: &crate::sync::diff::FileMetadata) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 826 | pub fn from_mime_type(mime_type: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 895 | pub fn is_compressible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 908 | 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:966:12 [INFO] [stdout] | [INFO] [stdout] 965 | impl SyncStatistics { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 966 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1040 | 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:1281:12 [INFO] [stdout] | [INFO] [stdout] 1244 | impl FileTypeStats { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 1281 | 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] 366 | pub fn from_json(json: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 370 | pub fn is_encrypted(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | 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:484:12 [INFO] [stdout] | [INFO] [stdout] 409 | impl FileMetadata { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 484 | pub fn calculate_hash(&mut self, algorithm: ChecksumType) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 512 | 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:614:12 [INFO] [stdout] | [INFO] [stdout] 613 | impl ChecksumType { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 614 | pub fn hash_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | pub fn recommended() -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/sync/diff.rs:710:12 [INFO] [stdout] | [INFO] [stdout] 660 | impl DiffResult { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 710 | pub fn sort_by_priority(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 714 | pub fn filter_by_action(&self, action: DiffAction) -> Vec<&FileDiff> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 721 | pub fn filter_by_tag(&self, tag: &str) -> Vec<&FileDiff> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 728 | pub fn find_by_path(&self, path: &str) -> Option<&FileDiff> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 732 | pub fn has_conflicts(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 736 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 751 | pub fn to_json(&self) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 756 | 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:835:12 [INFO] [stdout] | [INFO] [stdout] 798 | impl DiffStats { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 835 | pub fn finalize(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 843 | 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:855:8 [INFO] [stdout] | [INFO] [stdout] 855 | struct CsvDiff<'a> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DiffDetector` is never constructed [INFO] [stdout] --> src/sync/diff.rs:868:12 [INFO] [stdout] | [INFO] [stdout] 868 | pub struct DiffDetector { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/sync/diff.rs:874:12 [INFO] [stdout] | [INFO] [stdout] 873 | impl DiffDetector { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 874 | pub fn new(options: DiffOptions) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 881 | pub async fn detect_changes( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 945 | fn is_file_changed(&self, source: &FileMetadata, target: &FileMetadata) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 968 | fn create_file_diff(&self, source: &FileMetadata, target: Option<&FileMetadata>) -> FileDiff { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 983 | fn analyze_changes(&self, diff: &mut FileDiff) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1011 | fn detect_moves(&self, result: &mut DiffResult) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1050 | fn detect_conflicts(&self, result: &mut DiffResult) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1084 | fn calculate_file_similarity(&self, file1: &FileMetadata, file2: &FileMetadata) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1118 | 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:1128:12 [INFO] [stdout] | [INFO] [stdout] 1128 | 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 16s [INFO] running `Command { std: "docker" "inspect" "4878ea0a11e3d391f561632799e89c93fd7fa321cd1511e4303c98dec964d6d5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4878ea0a11e3d391f561632799e89c93fd7fa321cd1511e4303c98dec964d6d5", kill_on_drop: false }` [INFO] [stdout] 4878ea0a11e3d391f561632799e89c93fd7fa321cd1511e4303c98dec964d6d5