diff --git a/deltachat-repl/src/cmdline.rs b/deltachat-repl/src/cmdline.rs index 30f4c9185..28a166630 100644 --- a/deltachat-repl/src/cmdline.rs +++ b/deltachat-repl/src/cmdline.rs @@ -3,7 +3,7 @@ extern crate dirs; use std::path::Path; use std::str::FromStr; -use std::time::{Duration, SystemTime}; +use std::time::Duration; use anyhow::{bail, ensure, Result}; use deltachat::chat::{ diff --git a/src/blob.rs b/src/blob.rs index da4d07376..eacd972f5 100644 --- a/src/blob.rs +++ b/src/blob.rs @@ -696,9 +696,8 @@ fn encoded_img_exceeds_bytes( #[cfg(test)] mod tests { - use anyhow::Result; use fs::File; - use image::{GenericImageView, Pixel}; + use image::Pixel; use super::*; use crate::chat::{self, create_group_chat, ProtectionStatus}; diff --git a/src/chat.rs b/src/chat.rs index 9f91f48f1..c3b7326a5 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -2,7 +2,6 @@ use std::cmp; use std::collections::{HashMap, HashSet}; -use std::convert::{TryFrom, TryInto}; use std::fmt; use std::path::{Path, PathBuf}; use std::str::FromStr; @@ -4468,9 +4467,8 @@ impl Context { #[cfg(test)] mod tests { use super::*; - use crate::chatlist::{get_archived_cnt, Chatlist}; + use crate::chatlist::get_archived_cnt; use crate::constants::{DC_GCL_ARCHIVED_ONLY, DC_GCL_NO_SPECIALS}; - use crate::contact::{Contact, ContactAddress}; use crate::message::delete_msgs; use crate::receive_imf::receive_imf; use crate::test_utils::{sync, TestContext, TestContextManager}; diff --git a/src/config.rs b/src/config.rs index 027ef083a..c124f08b0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -773,12 +773,9 @@ fn get_config_keys_string() -> String { #[cfg(test)] mod tests { - use std::string::ToString; - use num_traits::FromPrimitive; use super::*; - use crate::constants; use crate::test_utils::{sync, TestContext, TestContextManager}; #[test] diff --git a/src/contact.rs b/src/contact.rs index 216a28b7e..131a5cd0c 100644 --- a/src/contact.rs +++ b/src/contact.rs @@ -2,7 +2,6 @@ use std::cmp::Reverse; use std::collections::BinaryHeap; -use std::convert::{TryFrom, TryInto}; use std::fmt; use std::ops::Deref; use std::path::{Path, PathBuf}; diff --git a/src/context.rs b/src/context.rs index feac1418f..b0c269e43 100644 --- a/src/context.rs +++ b/src/context.rs @@ -1343,20 +1343,14 @@ pub fn get_version_str() -> &'static str { #[cfg(test)] mod tests { - use std::time::Duration; - use anyhow::Context as _; use strum::IntoEnumIterator; use tempfile::tempdir; use super::*; - use crate::chat::{ - get_chat_contacts, get_chat_msgs, send_msg, set_muted, Chat, ChatId, MuteDuration, - }; + use crate::chat::{get_chat_contacts, get_chat_msgs, send_msg, set_muted, Chat, MuteDuration}; use crate::chatlist::Chatlist; use crate::constants::Chattype; - use crate::contact::ContactId; - use crate::message::{Message, Viewtype}; use crate::mimeparser::SystemMessage; use crate::receive_imf::receive_imf; use crate::test_utils::{get_chat_msg, TestContext}; @@ -1583,14 +1577,14 @@ mod tests { let t = TestContext::new().await; let info = t.get_info().await.unwrap(); - assert!(info.get("database_dir").is_some()); + assert!(info.contains_key("database_dir")); } #[test] fn test_get_info_no_context() { let info = get_info(); - assert!(info.get("deltachat_core_version").is_some()); - assert!(info.get("database_dir").is_none()); + assert!(info.contains_key("deltachat_core_version")); + assert!(!info.contains_key("database_dir")); assert_eq!(info.get("level").unwrap(), "awesome"); } diff --git a/src/download.rs b/src/download.rs index 1d031a81e..7919722b4 100644 --- a/src/download.rs +++ b/src/download.rs @@ -253,7 +253,6 @@ mod tests { use super::*; use crate::chat::{get_chat_msgs, send_msg}; use crate::ephemeral::Timer; - use crate::message::Viewtype; use crate::receive_imf::receive_imf_from_inbox; use crate::test_utils::TestContext; diff --git a/src/ephemeral.rs b/src/ephemeral.rs index 719243f3e..9146698c1 100644 --- a/src/ephemeral.rs +++ b/src/ephemeral.rs @@ -64,7 +64,7 @@ use std::cmp::max; use std::collections::BTreeSet; -use std::convert::{TryFrom, TryInto}; +use std::fmt; use std::num::ParseIntError; use std::str::FromStr; use std::time::{Duration, UNIX_EPOCH}; @@ -131,9 +131,9 @@ impl Default for Timer { } } -impl ToString for Timer { - fn to_string(&self) -> String { - self.to_u32().to_string() +impl fmt::Display for Timer { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.to_u32()) } } diff --git a/src/html.rs b/src/html.rs index 5af221b70..37798bc57 100644 --- a/src/html.rs +++ b/src/html.rs @@ -13,7 +13,7 @@ use std::pin::Pin; use anyhow::{Context as _, Result}; use base64::Engine as _; use futures::future::FutureExt; -use lettre_email::mime::{self, Mime}; +use lettre_email::mime::Mime; use lettre_email::PartBuilder; use mailparse::ParsedContentType; @@ -67,7 +67,7 @@ enum MimeMultipartType { /// and checks and returns the rough mime-type. fn get_mime_multipart_type(ctype: &ParsedContentType) -> MimeMultipartType { let mimetype = ctype.mimetype.to_lowercase(); - if mimetype.starts_with("multipart") && ctype.params.get("boundary").is_some() { + if mimetype.starts_with("multipart") && ctype.params.contains_key("boundary") { MimeMultipartType::Multiple } else if mimetype == "message/rfc822" { MimeMultipartType::Message diff --git a/src/imap.rs b/src/imap.rs index 61bde65f0..333488ae3 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -2414,9 +2414,6 @@ async fn add_all_recipients_as_contacts( #[cfg(test)] mod tests { use super::*; - use crate::chat::ChatId; - use crate::config::Config; - use crate::contact::Contact; use crate::test_utils::TestContext; #[test] diff --git a/src/imex.rs b/src/imex.rs index bab2732eb..e1887236c 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -824,7 +824,6 @@ mod tests { use tokio::task; use super::*; - use crate::key; use crate::pgp::{split_armored_data, HEADER_AUTOCRYPT, HEADER_SETUPCODE}; use crate::stock_str::StockMessage; use crate::test_utils::{alice_keypair, TestContext, TestContextManager}; @@ -1105,7 +1104,7 @@ mod tests { let (typ, headers, base64) = split_armored_data(&buf_1).unwrap(); assert_eq!(typ, BlockType::Message); assert!(S_EM_SETUPCODE.starts_with(headers.get(HEADER_SETUPCODE).unwrap())); - assert!(headers.get(HEADER_AUTOCRYPT).is_none()); + assert!(!headers.contains_key(HEADER_AUTOCRYPT)); assert!(!base64.is_empty()); @@ -1119,7 +1118,7 @@ mod tests { assert_eq!(typ, BlockType::PrivateKey); assert_eq!(headers.get(HEADER_AUTOCRYPT), Some(&"mutual".to_string())); - assert!(headers.get(HEADER_SETUPCODE).is_none()); + assert!(!headers.contains_key(HEADER_SETUPCODE)); } /// Tests that Autocrypt Setup Message encrypted with "plaintext" algorithm cannot be diff --git a/src/imex/transfer.rs b/src/imex/transfer.rs index ee388e66c..a685c35bb 100644 --- a/src/imex/transfer.rs +++ b/src/imex/transfer.rs @@ -597,7 +597,6 @@ mod tests { use std::time::Duration; use crate::chat::{get_chat_msgs, send_msg, ChatItem}; - use crate::message::{Message, Viewtype}; use crate::test_utils::TestContextManager; use super::*; diff --git a/src/location.rs b/src/location.rs index e5ce15a2e..95e6a7ffd 100644 --- a/src/location.rs +++ b/src/location.rs @@ -1,6 +1,5 @@ //! Location handling. -use std::convert::TryFrom; use std::time::Duration; use anyhow::{ensure, Context as _, Result}; diff --git a/src/mimefactory.rs b/src/mimefactory.rs index 01d353b9e..6eebceafa 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -1,13 +1,12 @@ //! # MIME message production. use std::collections::HashSet; -use std::convert::TryInto; use anyhow::{bail, ensure, Context as _, Result}; use base64::Engine as _; use chrono::TimeZone; use format_flowed::{format_flowed, format_flowed_quote}; -use lettre_email::{mime, Address, Header, MimeMultipartType, PartBuilder}; +use lettre_email::{Address, Header, MimeMultipartType, PartBuilder}; use tokio::fs; use crate::blob::BlobObject; diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 9d6b7a9d4..b4052ae08 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -10,7 +10,7 @@ use std::str; use anyhow::{bail, Context as _, Result}; use deltachat_derive::{FromSql, ToSql}; use format_flowed::unformat_flowed; -use lettre_email::mime::{self, Mime}; +use lettre_email::mime::Mime; use mailparse::{addrparse_header, DispositionType, MailHeader, MailHeaderMap, SingleInfo}; use crate::aheader::{Aheader, EncryptPreference}; @@ -836,7 +836,7 @@ impl MimeMessage { let mimetype = mail.ctype.mimetype.to_lowercase(); let m = if mimetype.starts_with("multipart") { - if mail.ctype.params.get("boundary").is_some() { + if mail.ctype.params.contains_key("boundary") { MimeS::Multiple } else { MimeS::Single @@ -2262,7 +2262,7 @@ mod tests { chat, chatlist::Chatlist, constants::{Blocked, DC_DESIRED_TEXT_LEN, DC_ELLIPSIS}, - message::{Message, MessageState, MessengerMessage}, + message::MessengerMessage, receive_imf::receive_imf, test_utils::{TestContext, TestContextManager}, tools::time, diff --git a/src/param.rs b/src/param.rs index 041215a62..d035d2d11 100644 --- a/src/param.rs +++ b/src/param.rs @@ -455,7 +455,6 @@ mod tests { use std::path::Path; use std::str::FromStr; - use anyhow::Result; use tokio::fs; use super::*; diff --git a/src/qr.rs b/src/qr.rs index 9dcc2b753..7081b1d1b 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -821,8 +821,6 @@ fn normalize_address(addr: &str) -> Result { #[cfg(test)] mod tests { - use anyhow::Result; - use super::*; use crate::aheader::EncryptPreference; use crate::chat::{create_group_chat, ProtectionStatus}; diff --git a/src/qr/dclogin_scheme.rs b/src/qr/dclogin_scheme.rs index 01ae8203e..965e288c4 100644 --- a/src/qr/dclogin_scheme.rs +++ b/src/qr/dclogin_scheme.rs @@ -268,7 +268,7 @@ pub(crate) async fn configure_from_login_qr( #[cfg(test)] mod test { - use anyhow::{self, bail}; + use anyhow::bail; use super::{decode_login, LoginOptions}; use crate::{login_param::CertificateChecks, provider::Socket, qr::Qr}; diff --git a/src/quota.rs b/src/quota.rs index 45e929d7a..620c3a5dc 100644 --- a/src/quota.rs +++ b/src/quota.rs @@ -155,10 +155,6 @@ impl Context { #[cfg(test)] mod tests { use super::*; - use crate::quota::{ - QUOTA_ALLCLEAR_PERCENTAGE, QUOTA_ERROR_THRESHOLD_PERCENTAGE, - QUOTA_WARN_THRESHOLD_PERCENTAGE, - }; #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_needs_quota_warning() -> Result<()> { diff --git a/src/receive_imf.rs b/src/receive_imf.rs index e289e6efe..4383b5f0c 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -1,7 +1,6 @@ //! Internet Message Format reception pipeline. use std::collections::HashSet; -use std::convert::TryFrom; use anyhow::{Context as _, Result}; use mailparse::{parse_mail, SingleInfo}; diff --git a/src/receive_imf/tests.rs b/src/receive_imf/tests.rs index 708ff2cbf..f08c54252 100644 --- a/src/receive_imf/tests.rs +++ b/src/receive_imf/tests.rs @@ -1,19 +1,16 @@ use tokio::fs; use super::*; -use crate::aheader::EncryptPreference; -use crate::chat::{self, get_chat_msgs, ChatItem, ChatVisibility}; use crate::chat::{ add_contact_to_chat, add_to_chat_contacts_table, create_group_chat, get_chat_contacts, - is_contact_in_chat, remove_contact_from_chat, send_text_msg, + get_chat_msgs, is_contact_in_chat, remove_contact_from_chat, send_text_msg, ChatItem, + ChatVisibility, }; use crate::chatlist::Chatlist; -use crate::config::Config; use crate::constants::{DC_GCL_FOR_FORWARDING, DC_GCL_NO_SPECIALS}; -use crate::download::{DownloadState, MIN_DOWNLOAD_LIMIT}; +use crate::download::MIN_DOWNLOAD_LIMIT; use crate::imap::prefetch_should_download; use crate::imex::{imex, ImexMode}; -use crate::message::{self, Message}; use crate::test_utils::{get_chat_msg, TestContext, TestContextManager}; #[tokio::test(flavor = "multi_thread", worker_threads = 2)] diff --git a/src/securejoin.rs b/src/securejoin.rs index 2eb66b634..355205f73 100644 --- a/src/securejoin.rs +++ b/src/securejoin.rs @@ -1,7 +1,5 @@ //! Verified contact protocol implementation as [specified by countermitm project](https://securejoin.readthedocs.io/en/latest/new.html#setup-contact-protocol). -use std::convert::TryFrom; - use anyhow::{bail, Context as _, Error, Result}; use percent_encoding::{utf8_percent_encode, AsciiSet, NON_ALPHANUMERIC}; @@ -757,12 +755,10 @@ fn encrypted_and_signed( #[cfg(test)] mod tests { use super::*; - use crate::chat; - use crate::chat::{remove_contact_from_chat, ProtectionStatus}; + use crate::chat::remove_contact_from_chat; use crate::chatlist::Chatlist; use crate::constants::Chattype; use crate::contact::ContactAddress; - use crate::peerstate::Peerstate; use crate::receive_imf::receive_imf; use crate::stock_str::chat_protection_enabled; use crate::test_utils::get_chat_msg; diff --git a/src/securejoin/qrinvite.rs b/src/securejoin/qrinvite.rs index 20f5abf0e..fc89ca9ea 100644 --- a/src/securejoin/qrinvite.rs +++ b/src/securejoin/qrinvite.rs @@ -4,8 +4,6 @@ //! with it rather hard, so here we have a wrapper type that specifically deals with Secure-Join //! QR-codes so that the Secure-Join code can have more guarantees when dealing with this. -use std::convert::TryFrom; - use anyhow::{bail, Error, Result}; use crate::contact::ContactId; diff --git a/src/sql.rs b/src/sql.rs index 2909eab2d..1f5055cce 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -1,11 +1,10 @@ //! # SQLite wrapper. use std::collections::{HashMap, HashSet}; -use std::convert::TryFrom; use std::path::{Path, PathBuf}; use anyhow::{bail, Context as _, Result}; -use rusqlite::{self, config::DbConfig, types::ValueRef, Connection, OpenFlags, Row}; +use rusqlite::{config::DbConfig, types::ValueRef, Connection, OpenFlags, Row}; use tokio::sync::{Mutex, MutexGuard, RwLock}; use crate::blob::BlobObject; @@ -1015,7 +1014,6 @@ mod tests { use async_channel as channel; use super::*; - use crate::config::Config; use crate::{test_utils::TestContext, EventType}; #[test] diff --git a/src/stock_str.rs b/src/stock_str.rs index 70853eb3f..d957640d5 100644 --- a/src/stock_str.rs +++ b/src/stock_str.rs @@ -1421,7 +1421,6 @@ mod tests { use super::*; use crate::chat::delete_and_reset_all_device_msgs; - use crate::chat::Chat; use crate::chatlist::Chatlist; use crate::test_utils::TestContext; diff --git a/src/sync.rs b/src/sync.rs index c43b70d68..7cc539a28 100644 --- a/src/sync.rs +++ b/src/sync.rs @@ -1,7 +1,6 @@ //! # Synchronize items between devices. use anyhow::Result; -use lettre_email::mime::{self}; use lettre_email::PartBuilder; use serde::{Deserialize, Serialize}; @@ -321,11 +320,9 @@ mod tests { use anyhow::bail; use super::*; - use crate::chat::Chat; use crate::chatlist::Chatlist; use crate::contact::{Contact, Origin}; use crate::test_utils::TestContext; - use crate::token::Namespace; use crate::tools::SystemTime; #[tokio::test(flavor = "multi_thread", worker_threads = 2)] diff --git a/src/tools.rs b/src/tools.rs index 9f8da2a9d..02530efba 100644 --- a/src/tools.rs +++ b/src/tools.rs @@ -1079,7 +1079,7 @@ DKIM Results: Passed=true, Works=true, Allow_Keychange=true"; assert_eq!(EmailAddress::new("@d.tt").is_ok(), false); } - use chrono::{NaiveDate, NaiveDateTime, NaiveTime}; + use chrono::NaiveDate; use proptest::prelude::*; use crate::chatlist::Chatlist; diff --git a/src/webxdc.rs b/src/webxdc.rs index 74c3fd9a0..77808cc92 100644 --- a/src/webxdc.rs +++ b/src/webxdc.rs @@ -20,7 +20,6 @@ use std::path::Path; use anyhow::{anyhow, bail, ensure, format_err, Context as _, Result}; use deltachat_derive::FromSql; -use lettre_email::mime; use lettre_email::PartBuilder; use serde::{Deserialize, Serialize}; use serde_json::Value;