[INFO] cloning repository https://github.com/k8-tools/mailmaster
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/k8-tools/mailmaster" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk8-tools%2Fmailmaster", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk8-tools%2Fmailmaster'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e87e4aab098a0b65b4a282facf12bb3fd441f176
[INFO] checking k8-tools/mailmaster against master#540f43a224317d894a9a0710a8d67704f179a33c for pr-155193
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk8-tools%2Fmailmaster" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/k8-tools/mailmaster
[INFO] finished tweaking git repo https://github.com/k8-tools/mailmaster
[INFO] tweaked toml for git repo https://github.com/k8-tools/mailmaster written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/k8-tools/mailmaster on toolchain 540f43a224317d894a9a0710a8d67704f179a33c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+540f43a224317d894a9a0710a8d67704f179a33c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/k8-tools/mailmaster 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" "+540f43a224317d894a9a0710a8d67704f179a33c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded zip v2.4.2
[INFO] [stderr]   Downloaded stop-token v0.7.0
[INFO] [stderr]   Downloaded compression-codecs v0.4.37
[INFO] [stderr]   Downloaded imap-proto v0.16.6
[INFO] [stderr]   Downloaded async-imap v0.10.4
[INFO] [stderr]   Downloaded calamine v0.24.0
[INFO] [stderr]   Downloaded async-compression v0.4.40
[INFO] [stderr]   Downloaded pdf-extract v0.7.12
[INFO] [stderr]   Downloaded js-sys v0.3.87
[INFO] [stderr]   Downloaded lettre v0.11.19
[INFO] [stderr]   Downloaded pom v1.1.0
[INFO] [stderr]   Downloaded euclid v0.20.14
[INFO] [stderr]   Downloaded mailparse v0.16.1
[INFO] [stderr]   Downloaded deflate64 v0.1.10
[INFO] [stderr]   Downloaded async-std v1.13.2
[INFO] [stderr]   Downloaded deranged v0.5.6
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.110
[INFO] [stderr]   Downloaded async-native-tls v0.5.0
[INFO] [stderr]   Downloaded psm v0.1.30
[INFO] [stderr]   Downloaded stacker v0.1.23
[INFO] [stderr]   Downloaded email-encoding v0.4.1
[INFO] [stderr]   Downloaded charset v0.1.5
[INFO] [stderr]   Downloaded adobe-cmap-parser v0.4.1
[INFO] [stderr]   Downloaded postscript v0.14.1
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.60
[INFO] [stderr]   Downloaded lzma-rs v0.3.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.110
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.110
[INFO] [stderr]   Downloaded codepage v0.1.2
[INFO] [stderr]   Downloaded hostname v0.4.2
[INFO] [stderr]   Downloaded type1-encoding-parser v0.1.0
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.110
[INFO] [stderr]   Downloaded web-sys v0.3.87
[INFO] [stderr]   Downloaded lopdf v0.34.0
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+540f43a224317d894a9a0710a8d67704f179a33c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 24e309cde0cc4323ebd82fef10c2b0fc20496b6fc950fff712f811d3d3db2bb1
[INFO] running `Command { std: "docker" "start" "-a" "24e309cde0cc4323ebd82fef10c2b0fc20496b6fc950fff712f811d3d3db2bb1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "24e309cde0cc4323ebd82fef10c2b0fc20496b6fc950fff712f811d3d3db2bb1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "24e309cde0cc4323ebd82fef10c2b0fc20496b6fc950fff712f811d3d3db2bb1", kill_on_drop: false }`
[INFO] [stdout] 24e309cde0cc4323ebd82fef10c2b0fc20496b6fc950fff712f811d3d3db2bb1
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+540f43a224317d894a9a0710a8d67704f179a33c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8bc9c4a6585677b4cbe101b6df9b48a31ad836345d7e02878d19434fa2e2a228
[INFO] running `Command { std: "docker" "start" "-a" "8bc9c4a6585677b4cbe101b6df9b48a31ad836345d7e02878d19434fa2e2a228", kill_on_drop: false }`
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking deranged v0.5.6
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]    Compiling stacker v0.1.23
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking getrandom v0.4.1
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]     Checking pom v1.1.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking crc v3.4.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking rangemap v1.7.1
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking bumpalo v3.20.2
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking quoted_printable v0.5.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]     Checking clap_builder v4.5.60
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking lopdf v0.34.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking xz2 v0.1.7
[INFO] [stderr]    Compiling ar_archive_writer v0.5.1
[INFO] [stderr]     Checking lzma-rs v0.3.0
[INFO] [stderr]     Checking bzip2 v0.5.2
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking adobe-cmap-parser v0.4.1
[INFO] [stderr]    Compiling psm v0.1.30
[INFO] [stderr]     Checking type1-encoding-parser v0.1.0
[INFO] [stderr]     Checking imap-proto v0.16.6
[INFO] [stderr]     Checking stop-token v0.7.0
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking euclid v0.20.14
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking charset v0.1.5
[INFO] [stderr]     Checking email-encoding v0.4.1
[INFO] [stderr]     Checking chumsky v0.9.3
[INFO] [stderr]     Checking quick-xml v0.31.0
[INFO] [stderr]     Checking codepage v0.1.2
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking hostname v0.4.2
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking deflate64 v0.1.10
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking postscript v0.14.1
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking email_address v0.2.9
[INFO] [stderr]     Checking self_cell v1.2.2
[INFO] [stderr]     Checking mailparse v0.16.1
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking flume v0.11.1
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking pdf-extract v0.7.12
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking async-native-tls v0.5.0
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking tracing-appender v0.2.4
[INFO] [stderr]     Checking calamine v0.24.0
[INFO] [stderr]     Checking clap v4.5.60
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking uuid v1.21.0
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking tempfile v3.25.0
[INFO] [stderr]     Checking dialoguer v0.11.0
[INFO] [stderr]     Checking async-signal v0.2.13
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking async-imap v0.10.4
[INFO] [stderr]     Checking lettre v0.11.19
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking mailmaster v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/commands/attachments/download.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::email_parser::EmailMessage`
[INFO] [stdout]   --> src/commands/attachments/download.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::core::email_parser::EmailMessage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::attachment_handler::AttachmentHandler`
[INFO] [stdout]  --> src/commands/attachments/list.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::attachment_handler::AttachmentHandler;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Select`
[INFO] [stdout]  --> src/commands/clean.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use dialoguer::{Confirm, Select};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/classify.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/commands/extract.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::imap_client::ImapClient`
[INFO] [stdout]  --> src/commands/auto_reply.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::imap_client::ImapClient;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/monitor.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/core/search_engine.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/core/search_engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/commands/attachments/download.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/search_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/rule_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::email_parser::EmailMessage`
[INFO] [stdout]   --> src/commands/attachments/download.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::core::email_parser::EmailMessage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::attachment_handler::AttachmentHandler`
[INFO] [stdout]  --> src/commands/attachments/list.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::attachment_handler::AttachmentHandler;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bail`
[INFO] [stdout]  --> src/core/extractor.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Result};
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Select`
[INFO] [stdout]  --> src/commands/clean.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use dialoguer::{Confirm, Select};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/classify.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/commands/extract.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::imap_client::ImapClient`
[INFO] [stdout]  --> src/commands/auto_reply.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::imap_client::ImapClient;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::Level`
[INFO] [stdout]  --> src/utils/logger.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::Level;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/monitor.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]  --> src/utils/notifications.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | #[cfg(feature = "notifications")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 42 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/core/search_engine.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/core/search_engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/search_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/rule_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bail`
[INFO] [stdout]  --> src/core/extractor.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Result};
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::Level`
[INFO] [stdout]  --> src/utils/logger.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::Level;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]  --> src/utils/notifications.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | #[cfg(feature = "notifications")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:80:19
[INFO] [stdout]    |
[INFO] [stdout] 80 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]    --> src/utils/notifications.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 42 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:80:19
[INFO] [stdout]    |
[INFO] [stdout] 80 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]    --> src/utils/notifications.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/commands/search.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     from: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]   --> src/commands/search.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     to: Option<&str>,
[INFO] [stdout]    |     ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `before`
[INFO] [stdout]   --> src/commands/search.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     before: Option<&str>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `after`
[INFO] [stdout]   --> src/commands/search.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     after: Option<&str>,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attachments_only`
[INFO] [stdout]   --> src/commands/search.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     attachments_only: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attachments_only`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/search.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/commands/search.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     from: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]   --> src/commands/search.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     to: Option<&str>,
[INFO] [stdout]    |     ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `before`
[INFO] [stdout]   --> src/commands/search.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     before: Option<&str>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `after`
[INFO] [stdout]   --> src/commands/search.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     after: Option<&str>,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attachments_only`
[INFO] [stdout]   --> src/commands/search.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     attachments_only: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attachments_only`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/search.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/download.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_name`
[INFO] [stdout]    --> src/commands/attachments/download.rs:104:25
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     let from_name = email.from.split('@').next().unwrap_or("unknown");
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/commands/attachments/download.rs:105:25
[INFO] [stdout]     |
[INFO] [stdout] 105 |                     let path = handler.save_attachment(
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/list.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/download.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_name`
[INFO] [stdout]    --> src/commands/attachments/download.rs:104:25
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     let from_name = email.from.split('@').next().unwrap_or("unknown");
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/commands/attachments/download.rs:105:25
[INFO] [stdout]     |
[INFO] [stdout] 105 |                     let path = handler.save_attachment(
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/commands/clean.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     size: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/clean.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/list.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/commands/clean.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     size: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/clean.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `folder`
[INFO] [stdout]   --> src/commands/archive.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     folder: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_folder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/archive.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `folder`
[INFO] [stdout]   --> src/commands/archive.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     folder: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_folder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/archive.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/export.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `period`
[INFO] [stdout]   --> src/commands/stats.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     period: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/stats.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/export.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/classify.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `period`
[INFO] [stdout]   --> src/commands/stats.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     period: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/stats.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/classify.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `subject`
[INFO] [stdout]   --> src/commands/auto_reply.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     subject: &str,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_subject`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `settings`
[INFO] [stdout]   --> src/commands/auto_reply.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     settings: &Settings,
[INFO] [stdout]    |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/duplicate.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/commands/duplicate.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 |         for (key, emails) in &duplicates {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]    --> src/commands/monitor.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     mailbox: Option<&str>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `subject`
[INFO] [stdout]   --> src/commands/auto_reply.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     subject: &str,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_subject`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `settings`
[INFO] [stdout]   --> src/commands/auto_reply.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     settings: &Settings,
[INFO] [stdout]    |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]    --> src/commands/monitor.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let account = settings.get_default_account()
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/duplicate.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/commands/duplicate.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 |         for (key, emails) in &duplicates {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]   --> src/commands/monitor.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     mailbox: Option<&str>,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/monitor.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]    --> src/commands/monitor.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     mailbox: Option<&str>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]    --> src/commands/monitor.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let account = settings.get_default_account()
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]   --> src/commands/monitor.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     mailbox: Option<&str>,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/monitor.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/email_parser.rs:158:29
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 if let Some(filename) = mail.headers.iter().find(|h| {
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/core/email_parser.rs:324:28
[INFO] [stdout]     |
[INFO] [stdout] 324 |         } else if let Some(ref body) = email.body_html {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/email_parser.rs:158:29
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 if let Some(filename) = mail.headers.iter().find(|h| {
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/core/email_parser.rs:324:28
[INFO] [stdout]     |
[INFO] [stdout] 324 |         } else if let Some(ref body) = email.body_html {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/search_engine.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         let mut result = text.to_string();
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/core/search_engine.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         let mut result = text.to_string();
[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: `template_name`
[INFO] [stdout]    --> src/core/extractor.rs:181:50
[INFO] [stdout]     |
[INFO] [stdout] 181 |     fn extract_from_excel(&self, filepath: &str, template_name: Option<&str>) -> Result<ExtractedData> {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `template_name`
[INFO] [stdout]    --> src/core/extractor.rs:181:50
[INFO] [stdout]     |
[INFO] [stdout] 181 |     fn extract_from_excel(&self, filepath: &str, template_name: Option<&str>) -> Result<ExtractedData> {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `operators` is never read
[INFO] [stdout]   --> src/core/search_engine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SearchEngine {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 11 |     operators: SearchOperators,
[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 `total_bytes` is never read
[INFO] [stdout]   --> src/utils/progress.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct DownloadProgress {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     total_bytes: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]    --> src/utils/progress.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct BatchProgress {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 104 |     pb: ProgressBar,
[INFO] [stdout] 105 |     total: u64,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `operators` is never read
[INFO] [stdout]   --> src/core/search_engine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SearchEngine {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 11 |     operators: SearchOperators,
[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 `total_bytes` is never read
[INFO] [stdout]   --> src/utils/progress.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct DownloadProgress {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     total_bytes: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]    --> src/utils/progress.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct BatchProgress {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 104 |     pb: ProgressBar,
[INFO] [stdout] 105 |     total: u64,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:308:9
[INFO] [stdout]     |
[INFO] [stdout] 308 |         session.uid_store(uid_str.as_str(), flag_str.as_str()).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:308:9
[INFO] [stdout]     |
[INFO] [stdout] 308 |         session.uid_store(uid_str.as_str(), flag_str.as_str()).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use colored::*;
[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::path::PathBuf`
[INFO] [stdout]  --> src/commands/attachments/download.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::email_parser::EmailMessage`
[INFO] [stdout]   --> src/commands/attachments/download.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::core::email_parser::EmailMessage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::attachment_handler::AttachmentHandler`
[INFO] [stdout]  --> src/commands/attachments/list.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::attachment_handler::AttachmentHandler;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `download::*`
[INFO] [stdout]  --> src/commands/attachments.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use download::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `list::*`
[INFO] [stdout]  --> src/commands/attachments.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use list::*;
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Select`
[INFO] [stdout]  --> src/commands/clean.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use dialoguer::{Confirm, Select};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/classify.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/commands/extract.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::imap_client::ImapClient`
[INFO] [stdout]  --> src/commands/auto_reply.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::imap_client::ImapClient;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/monitor.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `search::*`
[INFO] [stdout]   --> src/commands/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use search::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `attachments::*`
[INFO] [stdout]   --> src/commands/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use attachments::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clean::*`
[INFO] [stdout]   --> src/commands/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use clean::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `archive::*`
[INFO] [stdout]   --> src/commands/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use archive::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `export::*`
[INFO] [stdout]   --> src/commands/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use export::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stats::*`
[INFO] [stdout]   --> src/commands/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use stats::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `classify::*`
[INFO] [stdout]   --> src/commands/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use classify::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract::*`
[INFO] [stdout]   --> src/commands/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use extract::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `auto_reply::*`
[INFO] [stdout]   --> src/commands/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use auto_reply::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `duplicate::*`
[INFO] [stdout]   --> src/commands/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use duplicate::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `monitor::*`
[INFO] [stdout]   --> src/commands/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use monitor::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tutorial::*`
[INFO] [stdout]   --> src/commands/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use tutorial::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `examples::*`
[INFO] [stdout]   --> src/commands/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use examples::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use colored::*;
[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::path::PathBuf`
[INFO] [stdout]  --> src/commands/attachments/download.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::email_parser::EmailMessage`
[INFO] [stdout]   --> src/commands/attachments/download.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::core::email_parser::EmailMessage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `settings::Settings`
[INFO] [stdout]  --> src/config/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use settings::Settings;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `accounts::Account`
[INFO] [stdout]  --> src/config/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use accounts::Account;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::attachment_handler::AttachmentHandler`
[INFO] [stdout]  --> src/commands/attachments/list.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::attachment_handler::AttachmentHandler;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `download::*`
[INFO] [stdout]  --> src/commands/attachments.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use download::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `list::*`
[INFO] [stdout]  --> src/commands/attachments.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use list::*;
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Select`
[INFO] [stdout]  --> src/commands/clean.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use dialoguer::{Confirm, Select};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/core/search_engine.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/core/search_engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/search_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/rule_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bail`
[INFO] [stdout]  --> src/core/extractor.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Result};
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `imap_client::ImapClient`
[INFO] [stdout]   --> src/core/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use imap_client::ImapClient;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/classify.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `smtp_client::SmtpClient`
[INFO] [stdout]   --> src/core/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use smtp_client::SmtpClient;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `email_parser::EmailParser`
[INFO] [stdout]   --> src/core/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use email_parser::EmailParser;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `attachment_handler::AttachmentHandler`
[INFO] [stdout]   --> src/core/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use attachment_handler::AttachmentHandler;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `search_engine::SearchEngine`
[INFO] [stdout]   --> src/core/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use search_engine::SearchEngine;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rule_engine::RuleEngine`
[INFO] [stdout]   --> src/core/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use rule_engine::RuleEngine;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extractor::DataExtractor`
[INFO] [stdout]   --> src/core/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use extractor::DataExtractor;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::Level`
[INFO] [stdout]  --> src/utils/logger.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::Level;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]  --> src/utils/notifications.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | #[cfg(feature = "notifications")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 42 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/commands/extract.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::imap_client::ImapClient`
[INFO] [stdout]  --> src/commands/auto_reply.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::imap_client::ImapClient;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/commands/monitor.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `search::*`
[INFO] [stdout]   --> src/commands/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use search::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `attachments::*`
[INFO] [stdout]   --> src/commands/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use attachments::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clean::*`
[INFO] [stdout]   --> src/commands/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use clean::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `archive::*`
[INFO] [stdout]   --> src/commands/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use archive::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `export::*`
[INFO] [stdout]   --> src/commands/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use export::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stats::*`
[INFO] [stdout]   --> src/commands/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use stats::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `classify::*`
[INFO] [stdout]   --> src/commands/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use classify::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extract::*`
[INFO] [stdout]   --> src/commands/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use extract::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `auto_reply::*`
[INFO] [stdout]   --> src/commands/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use auto_reply::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `duplicate::*`
[INFO] [stdout]   --> src/commands/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use duplicate::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `monitor::*`
[INFO] [stdout]   --> src/commands/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use monitor::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tutorial::*`
[INFO] [stdout]   --> src/commands/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use tutorial::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `examples::*`
[INFO] [stdout]   --> src/commands/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use examples::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:80:19
[INFO] [stdout]    |
[INFO] [stdout] 80 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]    --> src/utils/notifications.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `logger::init_logger`
[INFO] [stdout]  --> src/utils/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use logger::init_logger;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colors::*`
[INFO] [stdout]   --> src/utils/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use colors::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `progress::*`
[INFO] [stdout]   --> src/utils/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use progress::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `notifications::*`
[INFO] [stdout]   --> src/utils/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use notifications::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `validators::*`
[INFO] [stdout]   --> src/utils/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use validators::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `settings::Settings`
[INFO] [stdout]  --> src/config/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use settings::Settings;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `accounts::Account`
[INFO] [stdout]  --> src/config/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use accounts::Account;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/core/search_engine.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/core/search_engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/search_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/core/rule_engine.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bail`
[INFO] [stdout]  --> src/core/extractor.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{bail, Result};
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `imap_client::ImapClient`
[INFO] [stdout]   --> src/core/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use imap_client::ImapClient;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `smtp_client::SmtpClient`
[INFO] [stdout]   --> src/core/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use smtp_client::SmtpClient;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `email_parser::EmailParser`
[INFO] [stdout]   --> src/core/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use email_parser::EmailParser;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `attachment_handler::AttachmentHandler`
[INFO] [stdout]   --> src/core/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use attachment_handler::AttachmentHandler;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `search_engine::SearchEngine`
[INFO] [stdout]   --> src/core/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use search_engine::SearchEngine;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rule_engine::RuleEngine`
[INFO] [stdout]   --> src/core/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use rule_engine::RuleEngine;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `extractor::DataExtractor`
[INFO] [stdout]   --> src/core/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use extractor::DataExtractor;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::Level`
[INFO] [stdout]  --> src/utils/logger.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::Level;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]  --> src/utils/notifications.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | #[cfg(feature = "notifications")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 42 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:80:19
[INFO] [stdout]    |
[INFO] [stdout] 80 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]   --> src/utils/notifications.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |         #[cfg(feature = "notifications")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `notifications`
[INFO] [stdout]    --> src/utils/notifications.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |         #[cfg(not(feature = "notifications"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `notifications` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `logger::init_logger`
[INFO] [stdout]  --> src/utils/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use logger::init_logger;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colors::*`
[INFO] [stdout]   --> src/utils/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use colors::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `progress::*`
[INFO] [stdout]   --> src/utils/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use progress::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `notifications::*`
[INFO] [stdout]   --> src/utils/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use notifications::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `validators::*`
[INFO] [stdout]   --> src/utils/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use validators::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/commands/search.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     from: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]   --> src/commands/search.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     to: Option<&str>,
[INFO] [stdout]    |     ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `before`
[INFO] [stdout]   --> src/commands/search.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     before: Option<&str>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `after`
[INFO] [stdout]   --> src/commands/search.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     after: Option<&str>,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attachments_only`
[INFO] [stdout]   --> src/commands/search.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     attachments_only: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attachments_only`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/search.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/download.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_name`
[INFO] [stdout]    --> src/commands/attachments/download.rs:104:25
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     let from_name = email.from.split('@').next().unwrap_or("unknown");
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/commands/attachments/download.rs:105:25
[INFO] [stdout]     |
[INFO] [stdout] 105 |                     let path = handler.save_attachment(
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/list.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/commands/clean.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     size: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/clean.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `folder`
[INFO] [stdout]   --> src/commands/archive.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     folder: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_folder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/archive.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/export.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `period`
[INFO] [stdout]   --> src/commands/stats.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     period: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/stats.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/classify.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `subject`
[INFO] [stdout]   --> src/commands/auto_reply.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     subject: &str,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_subject`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `settings`
[INFO] [stdout]   --> src/commands/auto_reply.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     settings: &Settings,
[INFO] [stdout]    |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/duplicate.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/commands/duplicate.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 |         for (key, emails) in &duplicates {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]    --> src/commands/monitor.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     mailbox: Option<&str>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]    --> src/commands/monitor.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let account = settings.get_default_account()
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]   --> src/commands/monitor.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     mailbox: Option<&str>,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/monitor.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/email_parser.rs:158:29
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 if let Some(filename) = mail.headers.iter().find(|h| {
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/core/email_parser.rs:324:28
[INFO] [stdout]     |
[INFO] [stdout] 324 |         } else if let Some(ref body) = email.body_html {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/search_engine.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         let mut result = text.to_string();
[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: `template_name`
[INFO] [stdout]    --> src/core/extractor.rs:181:50
[INFO] [stdout]     |
[INFO] [stdout] 181 |     fn extract_from_excel(&self, filepath: &str, template_name: Option<&str>) -> Result<ExtractedData> {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/commands/search.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     from: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]   --> src/commands/search.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     to: Option<&str>,
[INFO] [stdout]    |     ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `before`
[INFO] [stdout]   --> src/commands/search.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     before: Option<&str>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `after`
[INFO] [stdout]   --> src/commands/search.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     after: Option<&str>,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attachments_only`
[INFO] [stdout]   --> src/commands/search.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     attachments_only: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attachments_only`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/search.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `password` is never read
[INFO] [stdout]   --> src/config/settings.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Account {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub password: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Account` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_account` is never used
[INFO] [stdout]    --> src/config/settings.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl Settings {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn add_account(&mut self, name: &str, account: Account) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_env_secrets` is never used
[INFO] [stdout]    --> src/config/settings.rs:241:8
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub fn load_env_secrets() -> Result<HashMap<String, String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Account` is never constructed
[INFO] [stdout]  --> src/config/accounts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Account {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthMethod` is never used
[INFO] [stdout]   --> src/config/accounts.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum AuthMethod {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_oauth2`, `with_imap_port`, and `with_smtp_port` are never used
[INFO] [stdout]   --> src/config/accounts.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl Account {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 39 |     /// Crée un nouveau compte
[INFO] [stdout] 40 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn with_oauth2(mut self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn with_imap_port(mut self, port: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn with_smtp_port(mut self, port: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountManager` is never constructed
[INFO] [stdout]   --> src/config/accounts.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct AccountManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_account`, `get_account`, `list_accounts`, and `get_default` are never used
[INFO] [stdout]    --> src/config/accounts.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl AccountManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  90 |     /// Crée un nouveau gestionnaire
[INFO] [stdout]  91 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn add_account(&mut self, account: Account) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_account(&self, name: &str) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn list_accounts(&self) -> &[Account] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn get_default(&self) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `use_ssl` is never read
[INFO] [stdout]   --> src/core/imap_client.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ImapConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub use_ssl: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImapConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_folders` is never used
[INFO] [stdout]    --> src/core/imap_client.rs:122:18
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl ImapClient {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn list_folders(&self) -> Result<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SmtpTransport` is never used
[INFO] [stdout]   --> src/core/smtp_client.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub type SmtpTransport = AsyncSmtpTransport<lettre::Tokio1Executor>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SmtpClient` is never constructed
[INFO] [stdout]   --> src/core/smtp_client.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SmtpClient {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SmtpConfig` is never constructed
[INFO] [stdout]   --> src/core/smtp_client.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SmtpConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `connect`, `disconnect`, `send_email`, `send_email_with_attachment`, and `from_settings` are never used
[INFO] [stdout]    --> src/core/smtp_client.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl SmtpClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  34 |     /// Crée un nouveau client SMTP
[INFO] [stdout]  35 |     pub fn new(config: SmtpConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub async fn connect(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub async fn disconnect(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub async fn send_email(&self, to: &str, subject: &str, body: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn send_email_with_attachment(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn from_settings(settings: &Settings, account_name: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `headers` and `body_html` are never read
[INFO] [stdout]   --> src/core/email_parser.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct EmailMessage {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 10 |     /// En-têtes
[INFO] [stdout] 11 |     pub headers: HashMap<String, String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub body_html: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EmailMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains` is never used
[INFO] [stdout]    --> src/core/email_parser.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl EmailMessage {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn contains(&self, query: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailParser` is never constructed
[INFO] [stdout]    --> src/core/email_parser.rs:281:12
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub struct EmailParser;
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse`, `extract_recipients`, and `format_for_display` are never used
[INFO] [stdout]    --> src/core/email_parser.rs:285:12
[INFO] [stdout]     |
[INFO] [stdout] 283 | impl EmailParser {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 284 |     /// Parse un email brut
[INFO] [stdout] 285 |     pub fn parse(raw: &[u8]) -> Result<EmailMessage> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn extract_recipients(email: &EmailMessage) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn format_for_display(email: &EmailMessage) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/download.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_name`
[INFO] [stdout]    --> src/commands/attachments/download.rs:104:25
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     let from_name = email.from.split('@').next().unwrap_or("unknown");
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/commands/attachments/download.rs:105:25
[INFO] [stdout]     |
[INFO] [stdout] 105 |                     let path = handler.save_attachment(
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/core/email_parser.rs:333:4
[INFO] [stdout]     |
[INFO] [stdout] 333 | fn format_size(bytes: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/attachment_handler.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl AttachmentHandler {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn with_subfolders(mut self, create: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn save_attachments(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn list_types(attachments: &[Attachment]) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn total_size(attachments: &[Attachment]) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn filter_by_type<'a>(attachments: &'a [Attachment], types: &[&str]) -> Vec<&'a Attachment> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn filter_by_size(attachments: &[Attachment], max_size: u64) -> Vec<&Attachment> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn is_valid_attachment(attachment: &Attachment) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AttachmentMetadata` is never constructed
[INFO] [stdout]    --> src/core/attachment_handler.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct AttachmentMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_email_attachment` is never used
[INFO] [stdout]    --> src/core/attachment_handler.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl AttachmentMetadata {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 191 |     /// Crée depuis un email et une pièce jointe
[INFO] [stdout] 192 |     pub fn from_email_attachment(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchEngine` is never constructed
[INFO] [stdout]   --> src/core/search_engine.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SearchEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchOperators` is never constructed
[INFO] [stdout]   --> src/core/search_engine.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SearchOperators;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_query`, `tokenize`, and `parse_field` are never used
[INFO] [stdout]   --> src/core/search_engine.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl SearchOperators {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] 18 |     /// Parse une requête de recherche et retourne les critères
[INFO] [stdout] 19 |     pub fn parse_query(query: &str) -> SearchQuery {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn tokenize(query: &str) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     fn parse_field(field: &str) -> SearchField {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct SearchQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_criterion`, `with_limit`, `search`, `matches`, and `criterion_matches` are never used
[INFO] [stdout]    --> src/core/search_engine.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl SearchQuery {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 118 |     /// Crée une nouvelle requête
[INFO] [stdout] 119 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn add_criterion(&mut self, criterion: SearchCriterion) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn with_limit(mut self, limit: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn search<'a>(&self, emails: &'a [EmailMessage]) -> Vec<&'a EmailMessage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn matches(&self, email: &EmailMessage) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn criterion_matches(&self, criterion: &SearchCriterion, email: &EmailMessage) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchCriterion` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub struct SearchCriterion {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SearchField` is never used
[INFO] [stdout]    --> src/core/search_engine.rs:222:10
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub enum SearchField {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LogicalOperator` is never used
[INFO] [stdout]    --> src/core/search_engine.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum LogicalOperator {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `search`, `search_with_filters`, `search_by_date`, and `highlight_matches` are never used
[INFO] [stdout]    --> src/core/search_engine.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl SearchEngine {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 243 |     /// Crée un nouveau moteur de recherche
[INFO] [stdout] 244 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn search<'a>(&self, query: &str, emails: &'a [EmailMessage]) -> Vec<&'a EmailMessage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn search_with_filters<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn search_by_date<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn highlight_matches(&self, text: &str, query: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchResult` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout] 323 | pub struct SearchResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchInfo` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 331 | pub struct MatchInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/core/rule_engine.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ClassificationRule {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub name: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClassificationRule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `HasAttachments` is never constructed
[INFO] [stdout]   --> src/core/rule_engine.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum ConditionField {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 38 |     HasAttachments,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConditionField` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EndsWith`, `Regex`, and `LessThan` are never constructed
[INFO] [stdout]   --> src/core/rule_engine.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum ConditionOperator {
[INFO] [stdout]    |          ----------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 46 |     EndsWith,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 47 |     Regex,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 48 |     GreaterThan,
[INFO] [stdout] 49 |     LessThan,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConditionOperator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_from_string` and `add_rule` are never used
[INFO] [stdout]    --> src/core/rule_engine.rs:94:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl RuleEngine {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn load_from_string(&mut self, content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn add_rule(&mut self, rule: ClassificationRule) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_rules_to_file` is never used
[INFO] [stdout]    --> src/core/rule_engine.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | pub fn save_rules_to_file(rules: &[ClassificationRule], path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_log_path` is never used
[INFO] [stdout]   --> src/utils/logger.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn get_log_path() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_file_logger` is never used
[INFO] [stdout]   --> src/utils/logger.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn init_file_logger() -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `audit_log` is never used
[INFO] [stdout]   --> src/utils/logger.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn audit_log(action: &str, details: &str) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/utils/logger.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn format_size(bytes: u64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `success` is never used
[INFO] [stdout]  --> src/utils/colors.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn success(msg: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error` is never used
[INFO] [stdout]   --> src/utils/colors.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn error(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `warning` is never used
[INFO] [stdout]   --> src/utils/colors.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn warning(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `info` is never used
[INFO] [stdout]   --> src/utils/colors.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn info(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `highlight` is never used
[INFO] [stdout]   --> src/utils/colors.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn highlight(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `DOWNLOAD`, `LOADING`, `FOLDER`, and `CALENDAR` are never used
[INFO] [stdout]   --> src/utils/colors.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Symbols {
[INFO] [stdout]    | ------------ associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub const DOWNLOAD: &'static str = "⬇️";
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub const LOADING: &'static str = "⏳";
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub const FOLDER: &'static str = "📁";
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 68 |     /// Symbole de calendrier
[INFO] [stdout] 69 |     pub const CALENDAR: &'static str = "📅";
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress_bar` is never used
[INFO] [stdout]   --> src/utils/colors.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn progress_bar(current: usize, total: usize, prefix: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_bytes` is never read
[INFO] [stdout]   --> src/utils/progress.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct DownloadProgress {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     total_bytes: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `finish` is never used
[INFO] [stdout]   --> src/utils/progress.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl DownloadProgress {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn finish(&self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleProgress` is never constructed
[INFO] [stdout]   --> src/utils/progress.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct SimpleProgress {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_position`, `inc`, and `finish` are never used
[INFO] [stdout]   --> src/utils/progress.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl SimpleProgress {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 73 |     /// Crée une nouvelle barre de progression simple
[INFO] [stdout] 74 |     pub fn new(total: u64, message: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn set_position(&self, pos: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn inc(&self, delta: u64) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn finish(&self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BatchProgress` is never constructed
[INFO] [stdout]    --> src/utils/progress.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct BatchProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `next`, `finish`, and `error` are never used
[INFO] [stdout]    --> src/utils/progress.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl BatchProgress {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 110 |     /// Crée une nouvelle progression par lots
[INFO] [stdout] 111 |     pub fn new(total: u64, description: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn next(&mut self, item_name: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn finish(&self, message: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn error(&self, message: &str) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn progress(total: u64) -> ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress_with_message` is never used
[INFO] [stdout]    --> src/utils/progress.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn progress_with_message(total: u64, message: &str) -> ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `success`, `error`, `warning`, and `info` are never used
[INFO] [stdout]   --> src/utils/notifications.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Notifier {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout] 12 |     /// Affiche une notification de succès
[INFO] [stdout] 13 |     pub fn success(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn error(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn warning(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn info(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_from` and `with_min_size` are never used
[INFO] [stdout]    --> src/utils/notifications.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl Alert {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn with_from(mut self, pattern: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn with_min_size(mut self, size: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailValidator` is never constructed
[INFO] [stdout]  --> src/utils/validators.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct EmailValidator;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid` and `validate` are never used
[INFO] [stdout]   --> src/utils/validators.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl EmailValidator {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 11 |     /// Valide une adresse email
[INFO] [stdout] 12 |     pub fn is_valid(email: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn validate(email: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DateValidator` is never constructed
[INFO] [stdout]   --> src/utils/validators.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DateValidator;
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid` and `validate` are never used
[INFO] [stdout]   --> src/utils/validators.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl DateValidator {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 34 |     /// Valide une date au format YYYY-MM-DD
[INFO] [stdout] 35 |     pub fn is_valid(date: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn validate(date: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `matches` is never used
[INFO] [stdout]    --> src/utils/validators.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl SizeValidator {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn matches(size: u64, criteria: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PathValidator` is never constructed
[INFO] [stdout]    --> src/utils/validators.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct PathValidator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid`, `validate`, and `ensure_dir` are never used
[INFO] [stdout]    --> src/utils/validators.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl PathValidator {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 134 |     /// Vérifie si un chemin est valide
[INFO] [stdout] 135 |     pub fn is_valid(path: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn validate(path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn ensure_dir(path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormatValidator` is never constructed
[INFO] [stdout]    --> src/utils/validators.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub struct FormatValidator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SUPPORTED_ARCHIVE_FORMATS`, `SUPPORTED_EXPORT_FORMATS`, `SUPPORTED_ATTACHMENT_TYPES`, `validate_archive_format`, `validate_export_format`, and `validate_attachment_type` are never used
[INFO] [stdout]    --> src/utils/validators.rs:169:15
[INFO] [stdout]     |
[INFO] [stdout] 167 | impl FormatValidator {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 168 |     /// Liste des formats supportés
[INFO] [stdout] 169 |     pub const SUPPORTED_ARCHIVE_FORMATS: &'static [&'static str] = &["pst", "mbox", "eml"];
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 170 |     pub const SUPPORTED_EXPORT_FORMATS: &'static [&'static str] = &["csv", "json"];
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 171 |     pub const SUPPORTED_ATTACHMENT_TYPES: &'static [&'static str] = &[
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn validate_archive_format(format: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn validate_export_format(format: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn validate_attachment_type(attachment_type: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeriodValidator` is never constructed
[INFO] [stdout]    --> src/utils/validators.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub struct PeriodValidator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid` and `validate` are never used
[INFO] [stdout]    --> src/utils/validators.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | impl PeriodValidator {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] 220 |     /// Valide une période
[INFO] [stdout] 221 |     pub fn is_valid(period: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn validate(period: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/attachments/list.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:308:9
[INFO] [stdout]     |
[INFO] [stdout] 308 |         session.uid_store(uid_str.as_str(), flag_str.as_str()).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/commands/clean.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     size: Option<&str>,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/clean.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `folder`
[INFO] [stdout]   --> src/commands/archive.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     folder: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_folder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/archive.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/export.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `period`
[INFO] [stdout]   --> src/commands/stats.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     period: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/stats.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/classify.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `subject`
[INFO] [stdout]   --> src/commands/auto_reply.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     subject: &str,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_subject`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `settings`
[INFO] [stdout]   --> src/commands/auto_reply.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     settings: &Settings,
[INFO] [stdout]    |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/duplicate.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/commands/duplicate.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 |         for (key, emails) in &duplicates {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]    --> src/commands/monitor.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     mailbox: Option<&str>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]    --> src/commands/monitor.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let account = settings.get_default_account()
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mailbox`
[INFO] [stdout]   --> src/commands/monitor.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     mailbox: Option<&str>,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mailbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `account`
[INFO] [stdout]   --> src/commands/monitor.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let account = settings.get_default_account()
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_account`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/core/email_parser.rs:158:29
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 if let Some(filename) = mail.headers.iter().find(|h| {
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/core/email_parser.rs:324:28
[INFO] [stdout]     |
[INFO] [stdout] 324 |         } else if let Some(ref body) = email.body_html {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/search_engine.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         let mut result = text.to_string();
[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: `template_name`
[INFO] [stdout]    --> src/core/extractor.rs:181:50
[INFO] [stdout]     |
[INFO] [stdout] 181 |     fn extract_from_excel(&self, filepath: &str, template_name: Option<&str>) -> Result<ExtractedData> {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `password` is never read
[INFO] [stdout]   --> src/config/settings.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Account {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub password: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Account` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_account` is never used
[INFO] [stdout]    --> src/config/settings.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl Settings {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn add_account(&mut self, name: &str, account: Account) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_env_secrets` is never used
[INFO] [stdout]    --> src/config/settings.rs:241:8
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub fn load_env_secrets() -> Result<HashMap<String, String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Account` is never constructed
[INFO] [stdout]  --> src/config/accounts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Account {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthMethod` is never used
[INFO] [stdout]   --> src/config/accounts.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum AuthMethod {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_oauth2`, `with_imap_port`, and `with_smtp_port` are never used
[INFO] [stdout]   --> src/config/accounts.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl Account {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 39 |     /// Crée un nouveau compte
[INFO] [stdout] 40 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn with_oauth2(mut self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn with_imap_port(mut self, port: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn with_smtp_port(mut self, port: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountManager` is never constructed
[INFO] [stdout]   --> src/config/accounts.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct AccountManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_account`, `get_account`, `list_accounts`, and `get_default` are never used
[INFO] [stdout]    --> src/config/accounts.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl AccountManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  90 |     /// Crée un nouveau gestionnaire
[INFO] [stdout]  91 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn add_account(&mut self, account: Account) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_account(&self, name: &str) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn list_accounts(&self) -> &[Account] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn get_default(&self) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `use_ssl` is never read
[INFO] [stdout]   --> src/core/imap_client.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ImapConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub use_ssl: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImapConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_folders` is never used
[INFO] [stdout]    --> src/core/imap_client.rs:122:18
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl ImapClient {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn list_folders(&self) -> Result<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SmtpTransport` is never used
[INFO] [stdout]   --> src/core/smtp_client.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub type SmtpTransport = AsyncSmtpTransport<lettre::Tokio1Executor>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SmtpClient` is never constructed
[INFO] [stdout]   --> src/core/smtp_client.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SmtpClient {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SmtpConfig` is never constructed
[INFO] [stdout]   --> src/core/smtp_client.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SmtpConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `connect`, `disconnect`, `send_email`, `send_email_with_attachment`, and `from_settings` are never used
[INFO] [stdout]    --> src/core/smtp_client.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl SmtpClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  34 |     /// Crée un nouveau client SMTP
[INFO] [stdout]  35 |     pub fn new(config: SmtpConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub async fn connect(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub async fn disconnect(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub async fn send_email(&self, to: &str, subject: &str, body: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn send_email_with_attachment(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn from_settings(settings: &Settings, account_name: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `headers` and `body_html` are never read
[INFO] [stdout]   --> src/core/email_parser.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct EmailMessage {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 10 |     /// En-têtes
[INFO] [stdout] 11 |     pub headers: HashMap<String, String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub body_html: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EmailMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains` is never used
[INFO] [stdout]    --> src/core/email_parser.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl EmailMessage {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn contains(&self, query: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailParser` is never constructed
[INFO] [stdout]    --> src/core/email_parser.rs:281:12
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub struct EmailParser;
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse`, `extract_recipients`, and `format_for_display` are never used
[INFO] [stdout]    --> src/core/email_parser.rs:285:12
[INFO] [stdout]     |
[INFO] [stdout] 283 | impl EmailParser {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 284 |     /// Parse un email brut
[INFO] [stdout] 285 |     pub fn parse(raw: &[u8]) -> Result<EmailMessage> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn extract_recipients(email: &EmailMessage) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn format_for_display(email: &EmailMessage) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/core/email_parser.rs:333:4
[INFO] [stdout]     |
[INFO] [stdout] 333 | fn format_size(bytes: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/attachment_handler.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl AttachmentHandler {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn with_subfolders(mut self, create: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn save_attachments(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn list_types(attachments: &[Attachment]) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn total_size(attachments: &[Attachment]) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn filter_by_type<'a>(attachments: &'a [Attachment], types: &[&str]) -> Vec<&'a Attachment> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn filter_by_size(attachments: &[Attachment], max_size: u64) -> Vec<&Attachment> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn is_valid_attachment(attachment: &Attachment) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AttachmentMetadata` is never constructed
[INFO] [stdout]    --> src/core/attachment_handler.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct AttachmentMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_email_attachment` is never used
[INFO] [stdout]    --> src/core/attachment_handler.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl AttachmentMetadata {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 191 |     /// Crée depuis un email et une pièce jointe
[INFO] [stdout] 192 |     pub fn from_email_attachment(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchEngine` is never constructed
[INFO] [stdout]   --> src/core/search_engine.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SearchEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchOperators` is never constructed
[INFO] [stdout]   --> src/core/search_engine.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SearchOperators;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_query`, `tokenize`, and `parse_field` are never used
[INFO] [stdout]   --> src/core/search_engine.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl SearchOperators {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] 18 |     /// Parse une requête de recherche et retourne les critères
[INFO] [stdout] 19 |     pub fn parse_query(query: &str) -> SearchQuery {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn tokenize(query: &str) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     fn parse_field(field: &str) -> SearchField {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct SearchQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_criterion`, `with_limit`, `search`, `matches`, and `criterion_matches` are never used
[INFO] [stdout]    --> src/core/search_engine.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl SearchQuery {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 118 |     /// Crée une nouvelle requête
[INFO] [stdout] 119 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn add_criterion(&mut self, criterion: SearchCriterion) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn with_limit(mut self, limit: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn search<'a>(&self, emails: &'a [EmailMessage]) -> Vec<&'a EmailMessage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn matches(&self, email: &EmailMessage) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn criterion_matches(&self, criterion: &SearchCriterion, email: &EmailMessage) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchCriterion` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub struct SearchCriterion {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SearchField` is never used
[INFO] [stdout]    --> src/core/search_engine.rs:222:10
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub enum SearchField {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LogicalOperator` is never used
[INFO] [stdout]    --> src/core/search_engine.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum LogicalOperator {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `search`, `search_with_filters`, `search_by_date`, and `highlight_matches` are never used
[INFO] [stdout]    --> src/core/search_engine.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl SearchEngine {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 243 |     /// Crée un nouveau moteur de recherche
[INFO] [stdout] 244 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn search<'a>(&self, query: &str, emails: &'a [EmailMessage]) -> Vec<&'a EmailMessage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn search_with_filters<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn search_by_date<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn highlight_matches(&self, text: &str, query: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchResult` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout] 323 | pub struct SearchResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchInfo` is never constructed
[INFO] [stdout]    --> src/core/search_engine.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 331 | pub struct MatchInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/core/rule_engine.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ClassificationRule {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub name: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClassificationRule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `HasAttachments` is never constructed
[INFO] [stdout]   --> src/core/rule_engine.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum ConditionField {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 38 |     HasAttachments,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConditionField` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EndsWith`, `Regex`, and `LessThan` are never constructed
[INFO] [stdout]   --> src/core/rule_engine.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum ConditionOperator {
[INFO] [stdout]    |          ----------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 46 |     EndsWith,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 47 |     Regex,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 48 |     GreaterThan,
[INFO] [stdout] 49 |     LessThan,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConditionOperator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_from_string` and `add_rule` are never used
[INFO] [stdout]    --> src/core/rule_engine.rs:94:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl RuleEngine {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn load_from_string(&mut self, content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn add_rule(&mut self, rule: ClassificationRule) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_rules_to_file` is never used
[INFO] [stdout]    --> src/core/rule_engine.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | pub fn save_rules_to_file(rules: &[ClassificationRule], path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_log_path` is never used
[INFO] [stdout]   --> src/utils/logger.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn get_log_path() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_file_logger` is never used
[INFO] [stdout]   --> src/utils/logger.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn init_file_logger() -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `audit_log` is never used
[INFO] [stdout]   --> src/utils/logger.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn audit_log(action: &str, details: &str) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/utils/logger.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn format_size(bytes: u64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `success` is never used
[INFO] [stdout]  --> src/utils/colors.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn success(msg: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error` is never used
[INFO] [stdout]   --> src/utils/colors.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn error(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `warning` is never used
[INFO] [stdout]   --> src/utils/colors.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn warning(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `info` is never used
[INFO] [stdout]   --> src/utils/colors.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn info(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `highlight` is never used
[INFO] [stdout]   --> src/utils/colors.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn highlight(msg: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `DOWNLOAD`, `LOADING`, `FOLDER`, and `CALENDAR` are never used
[INFO] [stdout]   --> src/utils/colors.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Symbols {
[INFO] [stdout]    | ------------ associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub const DOWNLOAD: &'static str = "⬇️";
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub const LOADING: &'static str = "⏳";
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub const FOLDER: &'static str = "📁";
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 68 |     /// Symbole de calendrier
[INFO] [stdout] 69 |     pub const CALENDAR: &'static str = "📅";
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress_bar` is never used
[INFO] [stdout]   --> src/utils/colors.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn progress_bar(current: usize, total: usize, prefix: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_bytes` is never read
[INFO] [stdout]   --> src/utils/progress.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct DownloadProgress {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     total_bytes: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `finish` is never used
[INFO] [stdout]   --> src/utils/progress.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl DownloadProgress {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn finish(&self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleProgress` is never constructed
[INFO] [stdout]   --> src/utils/progress.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct SimpleProgress {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_position`, `inc`, and `finish` are never used
[INFO] [stdout]   --> src/utils/progress.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl SimpleProgress {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 73 |     /// Crée une nouvelle barre de progression simple
[INFO] [stdout] 74 |     pub fn new(total: u64, message: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn set_position(&self, pos: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn inc(&self, delta: u64) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn finish(&self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BatchProgress` is never constructed
[INFO] [stdout]    --> src/utils/progress.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct BatchProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `next`, `finish`, and `error` are never used
[INFO] [stdout]    --> src/utils/progress.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl BatchProgress {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 110 |     /// Crée une nouvelle progression par lots
[INFO] [stdout] 111 |     pub fn new(total: u64, description: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn next(&mut self, item_name: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn finish(&self, message: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn error(&self, message: &str) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn progress(total: u64) -> ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress_with_message` is never used
[INFO] [stdout]    --> src/utils/progress.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn progress_with_message(total: u64, message: &str) -> ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `success`, `error`, `warning`, and `info` are never used
[INFO] [stdout]   --> src/utils/notifications.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Notifier {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout] 12 |     /// Affiche une notification de succès
[INFO] [stdout] 13 |     pub fn success(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn error(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn warning(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn info(title: &str, message: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_from` and `with_min_size` are never used
[INFO] [stdout]    --> src/utils/notifications.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl Alert {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn with_from(mut self, pattern: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn with_min_size(mut self, size: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmailValidator` is never constructed
[INFO] [stdout]  --> src/utils/validators.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct EmailValidator;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid` and `validate` are never used
[INFO] [stdout]   --> src/utils/validators.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl EmailValidator {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 11 |     /// Valide une adresse email
[INFO] [stdout] 12 |     pub fn is_valid(email: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn validate(email: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DateValidator` is never constructed
[INFO] [stdout]   --> src/utils/validators.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct DateValidator;
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid` and `validate` are never used
[INFO] [stdout]   --> src/utils/validators.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl DateValidator {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 34 |     /// Valide une date au format YYYY-MM-DD
[INFO] [stdout] 35 |     pub fn is_valid(date: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn validate(date: &str) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `matches` is never used
[INFO] [stdout]    --> src/utils/validators.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl SizeValidator {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn matches(size: u64, criteria: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PathValidator` is never constructed
[INFO] [stdout]    --> src/utils/validators.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct PathValidator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid`, `validate`, and `ensure_dir` are never used
[INFO] [stdout]    --> src/utils/validators.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl PathValidator {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 134 |     /// Vérifie si un chemin est valide
[INFO] [stdout] 135 |     pub fn is_valid(path: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn validate(path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn ensure_dir(path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormatValidator` is never constructed
[INFO] [stdout]    --> src/utils/validators.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub struct FormatValidator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SUPPORTED_ARCHIVE_FORMATS`, `SUPPORTED_EXPORT_FORMATS`, `SUPPORTED_ATTACHMENT_TYPES`, `validate_archive_format`, `validate_export_format`, and `validate_attachment_type` are never used
[INFO] [stdout]    --> src/utils/validators.rs:169:15
[INFO] [stdout]     |
[INFO] [stdout] 167 | impl FormatValidator {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 168 |     /// Liste des formats supportés
[INFO] [stdout] 169 |     pub const SUPPORTED_ARCHIVE_FORMATS: &'static [&'static str] = &["pst", "mbox", "eml"];
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 170 |     pub const SUPPORTED_EXPORT_FORMATS: &'static [&'static str] = &["csv", "json"];
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 171 |     pub const SUPPORTED_ATTACHMENT_TYPES: &'static [&'static str] = &[
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn validate_archive_format(format: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn validate_export_format(format: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn validate_attachment_type(attachment_type: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeriodValidator` is never constructed
[INFO] [stdout]    --> src/utils/validators.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub struct PeriodValidator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_valid` and `validate` are never used
[INFO] [stdout]    --> src/utils/validators.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | impl PeriodValidator {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] 220 |     /// Valide une période
[INFO] [stdout] 221 |     pub fn is_valid(period: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn validate(period: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:308:9
[INFO] [stdout]     |
[INFO] [stdout] 308 |         session.uid_store(uid_str.as_str(), flag_str.as_str()).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Stream` that must be used
[INFO] [stdout]    --> src/core/imap_client.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |         session.uid_store(uid_str.as_str(), "+FLAGS.SILENT (\\Deleted)").await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 28s
[INFO] running `Command { std: "docker" "inspect" "8bc9c4a6585677b4cbe101b6df9b48a31ad836345d7e02878d19434fa2e2a228", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8bc9c4a6585677b4cbe101b6df9b48a31ad836345d7e02878d19434fa2e2a228", kill_on_drop: false }`
[INFO] [stdout] 8bc9c4a6585677b4cbe101b6df9b48a31ad836345d7e02878d19434fa2e2a228
