[INFO] cloning repository https://github.com/engineers-hub-ltd-in-house-project/rustmail
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/engineers-hub-ltd-in-house-project/rustmail" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fengineers-hub-ltd-in-house-project%2Frustmail", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fengineers-hub-ltd-in-house-project%2Frustmail'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 665043d72efe8aa2ee7d3c131f1bcd5c8fef2c33
[INFO] checking engineers-hub-ltd-in-house-project/rustmail against 1af98b7cdf86932b76182a387f52f1be6f0c1be0 for pr-159706
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fengineers-hub-ltd-in-house-project%2Frustmail" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/engineers-hub-ltd-in-house-project/rustmail
[INFO] finished tweaking git repo https://github.com/engineers-hub-ltd-in-house-project/rustmail
[INFO] tweaked toml for git repo https://github.com/engineers-hub-ltd-in-house-project/rustmail written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/engineers-hub-ltd-in-house-project/rustmail on toolchain 1af98b7cdf86932b76182a387f52f1be6f0c1be0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1af98b7cdf86932b76182a387f52f1be6f0c1be0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/engineers-hub-ltd-in-house-project/rustmail 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" "+1af98b7cdf86932b76182a387f52f1be6f0c1be0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded prettyplease v0.2.32
[INFO] [stderr]   Downloaded quinn-udp v0.5.12
[INFO] [stderr]   Downloaded stability v0.2.1
[INFO] [stderr]   Downloaded hyper-rustls v0.27.6
[INFO] [stderr]   Downloaded hyper-util v0.1.12
[INFO] [stderr]   Downloaded aws-lc-rs v1.13.1
[INFO] [stderr]   Downloaded oauth2 v4.4.2
[INFO] [stderr]   Downloaded hostname v0.4.1
[INFO] [stderr]   Downloaded quoted_printable v0.5.1
[INFO] [stderr]   Downloaded email_address v0.2.9
[INFO] [stderr]   Downloaded email-encoding v0.4.1
[INFO] [stderr]   Downloaded stacker v0.1.21
[INFO] [stderr]   Downloaded psm v0.1.26
[INFO] [stderr]   Downloaded ouroboros v0.18.5
[INFO] [stderr]   Downloaded ouroboros_macro v0.18.5
[INFO] [stderr]   Downloaded imap-proto v0.16.5
[INFO] [stderr]   Downloaded bufstream v0.1.4
[INFO] [stderr]   Downloaded imap v3.0.0-alpha.15
[INFO] [stderr]   Downloaded ratatui v0.26.3
[INFO] [stderr]   Downloaded lettre v0.11.16
[INFO] [stderr]   Downloaded stop-token v0.7.0
[INFO] [stderr]   Downloaded self_cell v1.2.0
[INFO] [stderr]   Downloaded async-imap v0.9.7
[INFO] [stderr]   Downloaded async-std v1.13.1
[INFO] [stderr]   Downloaded aws-lc-sys v0.29.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5
[INFO] running `Command { std: "docker" "start" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5" "/opt/rustwide/cargo-home/bin/cargo" "+1af98b7cdf86932b76182a387f52f1be6f0c1be0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5" "/opt/rustwide/cargo-home/bin/cargo" "+1af98b7cdf86932b76182a387f52f1be6f0c1be0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking socket2 v0.5.9
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]     Checking hashbrown v0.15.3
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]    Compiling aws-lc-rs v1.13.1
[INFO] [stderr]     Checking rustls-pki-types v1.12.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rustversion v1.0.21
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking futures-lite v2.6.0
[INFO] [stderr]     Checking async-lock v3.4.0
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling rustls v0.23.27
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking async-channel v2.3.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking webpki-roots v1.0.0
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking sync_wrapper v0.1.2
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]     Checking webpki-roots v0.25.4
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking stop-token v0.7.0
[INFO] [stderr]     Checking indexmap v2.9.0
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking email-encoding v0.4.1
[INFO] [stderr]     Checking hostname v0.4.1
[INFO] [stderr]    Compiling cc v1.2.24
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]     Checking email_address v0.2.9
[INFO] [stderr]     Checking bufstream v0.1.4
[INFO] [stderr]     Checking quoted_printable v0.5.1
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking castaway v0.2.3
[INFO] [stderr]     Checking self_cell v1.2.0
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking compact_str v0.7.1
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking imap-proto v0.16.5
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling cmake v0.1.54
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.108
[INFO] [stderr]    Compiling aws-lc-sys v0.29.0
[INFO] [stderr]    Compiling psm v0.1.26
[INFO] [stderr]    Compiling stacker v0.1.21
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling openssl v0.10.72
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking chumsky v0.9.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking polling v3.7.4
[INFO] [stderr]     Checking async-io v2.4.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking async-signal v0.2.10
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]     Checking async-process v2.3.0
[INFO] [stderr]    Compiling ouroboros_macro v0.18.5
[INFO] [stderr]     Checking async-std v1.13.1
[INFO] [stderr]    Compiling clap_derive v4.5.32
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling stability v0.2.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ratatui v0.26.3
[INFO] [stderr]     Checking ouroboros v0.18.5
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking clap v4.5.38
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking h2 v0.4.10
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking lettre v0.11.16
[INFO] [stderr]     Checking async-native-tls v0.5.0
[INFO] [stderr]     Checking async-imap v0.9.7
[INFO] [stderr]     Checking imap v3.0.0-alpha.15
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking rustls-webpki v0.103.3
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-util v0.1.12
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking oauth2 v4.4.2
[INFO] [stderr]     Checking tokio-rustls v0.26.2
[INFO] [stderr]     Checking hyper-rustls v0.27.6
[INFO] [stderr]     Checking reqwest v0.12.15
[INFO] [stderr]     Checking rustmail v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]  --> src/mail/gmail_api.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]  --> src/mail/gmail_api.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, TimeZone, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/mail/gmail_api.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GoogleOAuthClient`, `GoogleOAuthConfig`, `GoogleTokens`, `GoogleUserInfo`, and `OAuthFlowManager`
[INFO] [stdout]   --> src/mail/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     GoogleOAuthClient, GoogleOAuthConfig, GoogleTokens, GoogleUserInfo, OAuthFlowManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]  --> src/mail/gmail_api.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]  --> src/mail/gmail_api.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, TimeZone, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/mail/gmail_api.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GoogleOAuthClient`, `GoogleOAuthConfig`, `GoogleTokens`, `GoogleUserInfo`, and `OAuthFlowManager`
[INFO] [stdout]   --> src/mail/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     GoogleOAuthClient, GoogleOAuthConfig, GoogleTokens, GoogleUserInfo, OAuthFlowManager,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `imap_ok` is never read
[INFO] [stdout]    --> src/mail/client.rs:401:27
[INFO] [stdout]     |
[INFO] [stdout] 401 |         let mut imap_ok = false;
[INFO] [stdout]     |                           ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 407 |             imap_ok = connections.contains_key(account_id);
[INFO] [stdout]     |             ---------------------------------------------- `imap_ok` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `imap_ok` is never read
[INFO] [stdout]    --> src/mail/client.rs:401:27
[INFO] [stdout]     |
[INFO] [stdout] 401 |         let mut imap_ok = false;
[INFO] [stdout]     |                           ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 407 |             imap_ok = connections.contains_key(account_id);
[INFO] [stdout]     |             ---------------------------------------------- `imap_ok` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_folder_mapping`, `get_inbox_folder`, `get_sent_folder`, `get_drafts_folder`, and `get_trash_folder` are never used
[INFO] [stdout]    --> src/mail/account.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | impl Account {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 139 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn get_folder_mapping(&self, folder_type: &FolderType) -> Option<&FolderMapping> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn get_inbox_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn get_sent_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn get_drafts_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn get_trash_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_connection_url` is never used
[INFO] [stdout]    --> src/mail/account.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl ImapConfig {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 225 |     pub fn get_connection_url(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_connection_url` is never used
[INFO] [stdout]    --> src/mail/account.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 231 | impl SmtpConfig {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 232 |     pub fn get_connection_url(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/mail/account.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl FolderMapping {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 239 |     pub fn new(folder_type: FolderType, server_name: String, local_name: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `smtp_connections` is never read
[INFO] [stdout]   --> src/mail/client.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct MailClient {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     smtp_connections: Mutex<HashMap<String, SmtpClient>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/mail/client.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl MailClient {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn remove_account(&mut self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub async fn connect_smtp(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub async fn disconnect_imap(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub async fn disconnect_smtp(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub async fn fetch_message_body(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub async fn send_message(&self, account_id: &str, message: &Message) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn move_message(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub async fn delete_message(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub async fn mark_as_read(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub async fn get_folders(&self, account_id: &str) -> MailResult<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub async fn test_connections(&self, account_id: &str) -> MailResult<(bool, bool)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 422 |     pub async fn disconnect_all(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `history_id` is never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct GmailProfile {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     history_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailProfile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `next_page_token` and `result_size_estimate` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct GmailMessageList {
[INFO] [stdout]    |        ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     next_page_token: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     #[serde(rename = "resultSizeEstimate")]
[INFO] [stdout] 27 |     result_size_estimate: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailMessageList` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `thread_id` is never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct GmailMessageRef {
[INFO] [stdout]    |        --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     thread_id: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailMessageRef` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `thread_id`, `internal_date`, `history_id`, and `size_estimate` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct GmailMessage {
[INFO] [stdout]    |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     thread_id: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     internal_date: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 48 |     #[serde(rename = "historyId")]
[INFO] [stdout] 49 |     history_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 50 |     #[serde(rename = "sizeEstimate")]
[INFO] [stdout] 51 |     size_estimate: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailMessage` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `part_id`, `mime_type`, `filename`, `body`, and `parts` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct GmailPayload {
[INFO] [stdout]    |        ------------ fields in this struct
[INFO] [stdout] 56 |     #[serde(rename = "partId")]
[INFO] [stdout] 57 |     part_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 58 |     #[serde(rename = "mimeType")]
[INFO] [stdout] 59 |     mime_type: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 60 |     filename: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 61 |     headers: Option<Vec<GmailHeader>>,
[INFO] [stdout] 62 |     body: Option<GmailBody>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 63 |     parts: Option<Vec<GmailPayload>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailPayload` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `attachment_id`, `size`, and `data` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct GmailBody {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 74 |     #[serde(rename = "attachmentId")]
[INFO] [stdout] 75 |     attachment_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 76 |     size: Option<u32>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     data: Option<String>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailBody` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GmailLabels` is never constructed
[INFO] [stdout]   --> src/mail/gmail_api.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct GmailLabels {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GmailLabel` is never constructed
[INFO] [stdout]   --> src/mail/gmail_api.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | struct GmailLabel {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_folders` is never used
[INFO] [stdout]    --> src/mail/gmail_api.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl GmailApiClient {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn list_folders(&self) -> MailResult<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `disconnect`, `list_folders`, `fetch_message_body`, `set_message_flags`, `move_message`, and `delete_message` are never used
[INFO] [stdout]    --> src/mail/imap_client.rs:167:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImapClient {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn disconnect(&mut self) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn list_folders(&mut self) -> MailResult<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub async fn fetch_message_body(&mut self, folder_name: &str, uid: u32) -> MailResult<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub async fn set_message_flags(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn move_message(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub async fn delete_message(&mut self, folder_name: &str, uid: u32) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/mail/imap_client.rs:518:8
[INFO] [stdout]     |
[INFO] [stdout] 517 | impl XOAuth2Authenticator {
[INFO] [stdout]     | ------------------------- associated function in this implementation
[INFO] [stdout] 518 |     fn new(email: &str, access_token: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_name` is never used
[INFO] [stdout]   --> src/mail/message.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Address {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn display_name(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_html` is never used
[INFO] [stdout]   --> src/mail/message.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl MessageBody {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn new_html(content: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_as_read`, `mark_as_unread`, `toggle_flag`, `add_attachment`, `remove_attachment`, and `get_size` are never used
[INFO] [stdout]    --> src/mail/message.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Message {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn mark_as_read(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn mark_as_unread(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn toggle_flag(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn add_attachment(&mut self, attachment: Attachment) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn remove_attachment(&mut self, filename: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn get_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_image`, `is_text`, and `format_size` are never used
[INFO] [stdout]    --> src/mail/message.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl Attachment {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 207 |     pub fn new(filename: String, content_type: String, data: Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn is_image(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn is_text(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn format_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GoogleUserInfo` is never constructed
[INFO] [stdout]   --> src/mail/oauth.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct GoogleUserInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config` and `http_client` are never read
[INFO] [stdout]   --> src/mail/oauth.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct GoogleOAuthClient {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 45 |     oauth_client: BasicClient,
[INFO] [stdout] 46 |     config: GoogleOAuthConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     http_client: reqwest::Client,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_user_info` and `validate_token` are never used
[INFO] [stdout]    --> src/mail/oauth.rs:128:18
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl GoogleOAuthClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub async fn get_user_info(&self, access_token: &str) -> Result<GoogleUserInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn validate_token(&self, access_token: &str) -> Result<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `connect`, `setup_oauth2_auth`, `send_message`, `test_connection`, and `get_send_log` are never used
[INFO] [stdout]    --> src/mail/smtp_client.rs:23:18
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl SmtpClient {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub async fn connect(&mut self) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     async fn setup_oauth2_auth(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub async fn send_message(&mut self, message: &Message) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub async fn test_connection(&self) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn get_send_log(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchEngine` is never constructed
[INFO] [stdout]  --> src/search/mod.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct SearchEngine {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `search`, `search_by_sender`, and `search_by_subject` are never used
[INFO] [stdout]   --> src/search/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl SearchEngine {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn search<'a>(&self, query: &str, messages: &'a [Message]) -> Vec<&'a Message> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn search_by_sender<'a>(&self, sender: &str, messages: &'a [Message]) -> Vec<&'a Message> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn search_by_subject<'a>(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/config.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Config {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 111 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn get_data_dir(&self) -> &PathBuf {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn get_database_file(&self) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn remove_account(&mut self, account_id: &str) -> StorageResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn get_account(&self, account_id: &str) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn get_account_mut(&mut self, account_id: &str) -> Option<&mut Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn get_accounts(&self) -> &[Account] {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn validate(&self) -> StorageResult<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ComposeWidget` is never constructed
[INFO] [stdout]  --> src/ui/compose.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ComposeWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailListWidget` is never constructed
[INFO] [stdout]  --> src/ui/mail_list.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MailListWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailViewWidget` is never constructed
[INFO] [stdout]  --> src/ui/mail_view.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MailViewWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailListWidget` is never constructed
[INFO] [stdout]  --> src/ui/widgets.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MailListWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailViewWidget` is never constructed
[INFO] [stdout]  --> src/ui/widgets.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MailViewWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ComposeWidget` is never constructed
[INFO] [stdout]  --> src/ui/widgets.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ComposeWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]  --> src/utils/mod.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn format_size(size: u64) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_string` is never used
[INFO] [stdout]   --> src/utils/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn truncate_string(s: &str, max_len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp` is never used
[INFO] [stdout]   --> src/utils/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn current_timestamp() -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_email` is never used
[INFO] [stdout]   --> src/utils/mod.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn validate_email(email: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 | /         session
[INFO] [stdout] 339 | |             .uid_store(&uid.to_string(), &format!("+FLAGS ({})", flags_str))
[INFO] [stdout] 340 | |             .await
[INFO] [stdout] 341 | |             .map_err(|e| MailError::Protocol(format!("Flag setting failed: {:?}", e)))?;
[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 `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:367:9
[INFO] [stdout]     |
[INFO] [stdout] 367 | /         session
[INFO] [stdout] 368 | |             .uid_store(&uid.to_string(), "+FLAGS (\\Deleted)")
[INFO] [stdout] 369 | |             .await
[INFO] [stdout] 370 | |             .map_err(|e| MailError::Protocol(format!("Delete flag setting failed: {:?}", e)))?;
[INFO] [stdout]     | |______________________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:373:9
[INFO] [stdout]     |
[INFO] [stdout] 373 | /         session
[INFO] [stdout] 374 | |             .expunge()
[INFO] [stdout] 375 | |             .await
[INFO] [stdout] 376 | |             .map_err(|e| MailError::Protocol(format!("Expunge failed: {:?}", e)))?;
[INFO] [stdout]     | |__________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 | /         session
[INFO] [stdout] 392 | |             .uid_store(&uid.to_string(), "+FLAGS (\\Deleted)")
[INFO] [stdout] 393 | |             .await
[INFO] [stdout] 394 | |             .map_err(|e| MailError::Protocol(format!("Delete flag setting failed: {:?}", e)))?;
[INFO] [stdout]     | |______________________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:397:9
[INFO] [stdout]     |
[INFO] [stdout] 397 | /         session
[INFO] [stdout] 398 | |             .expunge()
[INFO] [stdout] 399 | |             .await
[INFO] [stdout] 400 | |             .map_err(|e| MailError::Protocol(format!("Expunge failed: {:?}", e)))?;
[INFO] [stdout]     | |__________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_folder_mapping`, `get_inbox_folder`, `get_sent_folder`, `get_drafts_folder`, and `get_trash_folder` are never used
[INFO] [stdout]    --> src/mail/account.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | impl Account {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 139 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn get_folder_mapping(&self, folder_type: &FolderType) -> Option<&FolderMapping> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn get_inbox_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn get_sent_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn get_drafts_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn get_trash_folder(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_connection_url` is never used
[INFO] [stdout]    --> src/mail/account.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl ImapConfig {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 225 |     pub fn get_connection_url(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_connection_url` is never used
[INFO] [stdout]    --> src/mail/account.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 231 | impl SmtpConfig {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 232 |     pub fn get_connection_url(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/mail/account.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl FolderMapping {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 239 |     pub fn new(folder_type: FolderType, server_name: String, local_name: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `smtp_connections` is never read
[INFO] [stdout]   --> src/mail/client.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct MailClient {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     smtp_connections: Mutex<HashMap<String, SmtpClient>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/mail/client.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl MailClient {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn remove_account(&mut self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub async fn connect_smtp(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub async fn disconnect_imap(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub async fn disconnect_smtp(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub async fn fetch_message_body(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub async fn send_message(&self, account_id: &str, message: &Message) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn move_message(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub async fn delete_message(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub async fn mark_as_read(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub async fn get_folders(&self, account_id: &str) -> MailResult<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub async fn test_connections(&self, account_id: &str) -> MailResult<(bool, bool)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 422 |     pub async fn disconnect_all(&self, account_id: &str) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `history_id` is never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct GmailProfile {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     history_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailProfile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `next_page_token` and `result_size_estimate` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct GmailMessageList {
[INFO] [stdout]    |        ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     next_page_token: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     #[serde(rename = "resultSizeEstimate")]
[INFO] [stdout] 27 |     result_size_estimate: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailMessageList` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `thread_id` is never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct GmailMessageRef {
[INFO] [stdout]    |        --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     thread_id: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailMessageRef` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `thread_id`, `internal_date`, `history_id`, and `size_estimate` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct GmailMessage {
[INFO] [stdout]    |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     thread_id: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     internal_date: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 48 |     #[serde(rename = "historyId")]
[INFO] [stdout] 49 |     history_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 50 |     #[serde(rename = "sizeEstimate")]
[INFO] [stdout] 51 |     size_estimate: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailMessage` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `part_id`, `mime_type`, `filename`, `body`, and `parts` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct GmailPayload {
[INFO] [stdout]    |        ------------ fields in this struct
[INFO] [stdout] 56 |     #[serde(rename = "partId")]
[INFO] [stdout] 57 |     part_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 58 |     #[serde(rename = "mimeType")]
[INFO] [stdout] 59 |     mime_type: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 60 |     filename: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 61 |     headers: Option<Vec<GmailHeader>>,
[INFO] [stdout] 62 |     body: Option<GmailBody>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 63 |     parts: Option<Vec<GmailPayload>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailPayload` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `attachment_id`, `size`, and `data` are never read
[INFO] [stdout]   --> src/mail/gmail_api.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct GmailBody {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 74 |     #[serde(rename = "attachmentId")]
[INFO] [stdout] 75 |     attachment_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 76 |     size: Option<u32>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     data: Option<String>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GmailBody` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GmailLabels` is never constructed
[INFO] [stdout]   --> src/mail/gmail_api.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct GmailLabels {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GmailLabel` is never constructed
[INFO] [stdout]   --> src/mail/gmail_api.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | struct GmailLabel {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_folders` is never used
[INFO] [stdout]    --> src/mail/gmail_api.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl GmailApiClient {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn list_folders(&self) -> MailResult<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `disconnect`, `list_folders`, `fetch_message_body`, `set_message_flags`, `move_message`, and `delete_message` are never used
[INFO] [stdout]    --> src/mail/imap_client.rs:167:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImapClient {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn disconnect(&mut self) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn list_folders(&mut self) -> MailResult<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub async fn fetch_message_body(&mut self, folder_name: &str, uid: u32) -> MailResult<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub async fn set_message_flags(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub async fn move_message(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub async fn delete_message(&mut self, folder_name: &str, uid: u32) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/mail/imap_client.rs:518:8
[INFO] [stdout]     |
[INFO] [stdout] 517 | impl XOAuth2Authenticator {
[INFO] [stdout]     | ------------------------- associated function in this implementation
[INFO] [stdout] 518 |     fn new(email: &str, access_token: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_name` is never used
[INFO] [stdout]   --> src/mail/message.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Address {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn display_name(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_html` is never used
[INFO] [stdout]   --> src/mail/message.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl MessageBody {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn new_html(content: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_as_read`, `mark_as_unread`, `toggle_flag`, `add_attachment`, `remove_attachment`, and `get_size` are never used
[INFO] [stdout]    --> src/mail/message.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Message {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn mark_as_read(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn mark_as_unread(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn toggle_flag(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn add_attachment(&mut self, attachment: Attachment) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn remove_attachment(&mut self, filename: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn get_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_image`, `is_text`, and `format_size` are never used
[INFO] [stdout]    --> src/mail/message.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl Attachment {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 207 |     pub fn new(filename: String, content_type: String, data: Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn is_image(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn is_text(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn format_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GoogleUserInfo` is never constructed
[INFO] [stdout]   --> src/mail/oauth.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct GoogleUserInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config` and `http_client` are never read
[INFO] [stdout]   --> src/mail/oauth.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct GoogleOAuthClient {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 45 |     oauth_client: BasicClient,
[INFO] [stdout] 46 |     config: GoogleOAuthConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     http_client: reqwest::Client,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_user_info`, `generate_xoauth2_string`, and `validate_token` are never used
[INFO] [stdout]    --> src/mail/oauth.rs:128:18
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl GoogleOAuthClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub async fn get_user_info(&self, access_token: &str) -> Result<GoogleUserInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn generate_xoauth2_string(&self, email: &str, access_token: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn validate_token(&self, access_token: &str) -> Result<bool> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `account` is never read
[INFO] [stdout]   --> src/mail/smtp_client.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct SmtpClient {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 10 |     account: Account,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/mail/smtp_client.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl SmtpClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  15 |     pub fn new(account: Account) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub async fn connect(&mut self) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     async fn setup_oauth2_auth(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub async fn send_message(&mut self, message: &Message) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn build_lettre_message(&self, message: &Message) -> MailResult<LettreMessage> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub async fn test_connection(&self) -> MailResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn get_send_log(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchEngine` is never constructed
[INFO] [stdout]  --> src/search/mod.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct SearchEngine {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `search`, `search_by_sender`, and `search_by_subject` are never used
[INFO] [stdout]   --> src/search/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl SearchEngine {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn search<'a>(&self, query: &str, messages: &'a [Message]) -> Vec<&'a Message> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn search_by_sender<'a>(&self, sender: &str, messages: &'a [Message]) -> Vec<&'a Message> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn search_by_subject<'a>(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/config.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Config {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 111 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn get_data_dir(&self) -> &PathBuf {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn get_database_file(&self) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn remove_account(&mut self, account_id: &str) -> StorageResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn get_account(&self, account_id: &str) -> Option<&Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn get_account_mut(&mut self, account_id: &str) -> Option<&mut Account> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn get_accounts(&self) -> &[Account] {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn validate(&self) -> StorageResult<()> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ComposeWidget` is never constructed
[INFO] [stdout]  --> src/ui/compose.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ComposeWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailListWidget` is never constructed
[INFO] [stdout]  --> src/ui/mail_list.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MailListWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailViewWidget` is never constructed
[INFO] [stdout]  --> src/ui/mail_view.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MailViewWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailListWidget` is never constructed
[INFO] [stdout]  --> src/ui/widgets.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MailListWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MailViewWidget` is never constructed
[INFO] [stdout]  --> src/ui/widgets.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MailViewWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ComposeWidget` is never constructed
[INFO] [stdout]  --> src/ui/widgets.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ComposeWidget;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]  --> src/utils/mod.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn format_size(size: u64) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_string` is never used
[INFO] [stdout]   --> src/utils/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn truncate_string(s: &str, max_len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp` is never used
[INFO] [stdout]   --> src/utils/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn current_timestamp() -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_email` is never used
[INFO] [stdout]   --> src/utils/mod.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn validate_email(email: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 | /         session
[INFO] [stdout] 339 | |             .uid_store(&uid.to_string(), &format!("+FLAGS ({})", flags_str))
[INFO] [stdout] 340 | |             .await
[INFO] [stdout] 341 | |             .map_err(|e| MailError::Protocol(format!("Flag setting failed: {:?}", e)))?;
[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 `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:367:9
[INFO] [stdout]     |
[INFO] [stdout] 367 | /         session
[INFO] [stdout] 368 | |             .uid_store(&uid.to_string(), "+FLAGS (\\Deleted)")
[INFO] [stdout] 369 | |             .await
[INFO] [stdout] 370 | |             .map_err(|e| MailError::Protocol(format!("Delete flag setting failed: {:?}", e)))?;
[INFO] [stdout]     | |______________________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:373:9
[INFO] [stdout]     |
[INFO] [stdout] 373 | /         session
[INFO] [stdout] 374 | |             .expunge()
[INFO] [stdout] 375 | |             .await
[INFO] [stdout] 376 | |             .map_err(|e| MailError::Protocol(format!("Expunge failed: {:?}", e)))?;
[INFO] [stdout]     | |__________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 | /         session
[INFO] [stdout] 392 | |             .uid_store(&uid.to_string(), "+FLAGS (\\Deleted)")
[INFO] [stdout] 393 | |             .await
[INFO] [stdout] 394 | |             .map_err(|e| MailError::Protocol(format!("Delete flag setting failed: {:?}", e)))?;
[INFO] [stdout]     | |______________________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Stream` that must be used
[INFO] [stdout]    --> src/mail/imap_client.rs:397:9
[INFO] [stdout]     |
[INFO] [stdout] 397 | /         session
[INFO] [stdout] 398 | |             .expunge()
[INFO] [stdout] 399 | |             .await
[INFO] [stdout] 400 | |             .map_err(|e| MailError::Protocol(format!("Expunge failed: {:?}", e)))?;
[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 19s
[INFO] running `Command { std: "docker" "inspect" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5", kill_on_drop: false }`
[INFO] [stdout] 064d75248a1d7541fdde5a37be8eede7a72573a31704694eee7081a11c8d90c5
