diff --git a/deltachat-ffi/src/lot.rs b/deltachat-ffi/src/lot.rs index 1e6a7831a..2e3d5e0c5 100644 --- a/deltachat-ffi/src/lot.rs +++ b/deltachat-ffi/src/lot.rs @@ -22,20 +22,15 @@ pub enum Lot { } #[repr(u8)] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] pub enum Meaning { + #[default] None = 0, Text1Draft = 1, Text1Username = 2, Text1Self = 3, } -impl Default for Meaning { - fn default() -> Self { - Meaning::None - } -} - impl Lot { pub fn get_text1(&self) -> Option<&str> { match self { @@ -151,9 +146,9 @@ impl Lot { } #[repr(u32)] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] pub enum LotState { - // Default + #[default] Undefined = 0, // Qr States @@ -215,12 +210,6 @@ pub enum LotState { MsgOutMdnRcvd = 28, } -impl Default for LotState { - fn default() -> Self { - LotState::Undefined - } -} - impl From for LotState { fn from(s: MessageState) -> Self { use MessageState::*; diff --git a/src/aheader.rs b/src/aheader.rs index 07f18d963..e471634b8 100644 --- a/src/aheader.rs +++ b/src/aheader.rs @@ -11,20 +11,15 @@ use anyhow::{bail, Context as _, Error, Result}; use crate::key::{DcKey, SignedPublicKey}; /// Possible values for encryption preference -#[derive(PartialEq, Eq, Debug, Clone, Copy, FromPrimitive, ToPrimitive)] +#[derive(PartialEq, Eq, Debug, Default, Clone, Copy, FromPrimitive, ToPrimitive)] #[repr(u8)] pub enum EncryptPreference { + #[default] NoPreference = 0, Mutual = 1, Reset = 20, } -impl Default for EncryptPreference { - fn default() -> Self { - EncryptPreference::NoPreference - } -} - impl fmt::Display for EncryptPreference { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { match *self { diff --git a/src/chat.rs b/src/chat.rs index 788e15f26..0017eeabc 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -61,6 +61,7 @@ pub enum ChatItem { /// Chat protection status. #[derive( Debug, + Default, Display, Clone, Copy, @@ -77,6 +78,7 @@ pub enum ChatItem { #[repr(u32)] pub enum ProtectionStatus { /// Chat is not protected. + #[default] Unprotected = 0, /// Chat is protected. @@ -85,12 +87,6 @@ pub enum ProtectionStatus { Protected = 1, } -impl Default for ProtectionStatus { - fn default() -> Self { - ProtectionStatus::Unprotected - } -} - /// The reason why messages cannot be sent to the chat. /// /// The reason is mainly for logging and displaying in debug REPL, thus not translated. diff --git a/src/constants.rs b/src/constants.rs index 7c5b2a95c..f83f7d519 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -12,6 +12,7 @@ pub static DC_VERSION_STR: Lazy = Lazy::new(|| env!("CARGO_PKG_VERSION") #[derive( Debug, + Default, Display, Clone, Copy, @@ -26,81 +27,56 @@ pub static DC_VERSION_STR: Lazy = Lazy::new(|| env!("CARGO_PKG_VERSION") )] #[repr(i8)] pub enum Blocked { + #[default] Not = 0, Yes = 1, Request = 2, } -impl Default for Blocked { - fn default() -> Self { - Blocked::Not - } -} - #[derive( - Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, + Debug, Default, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, )] #[repr(u8)] pub enum ShowEmails { Off = 0, AcceptedContacts = 1, + #[default] // also change Config.ShowEmails props(default) on changes All = 2, } -impl Default for ShowEmails { - fn default() -> Self { - ShowEmails::All // also change Config.ShowEmails props(default) on changes - } -} - #[derive( - Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, + Debug, Default, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, )] #[repr(u8)] pub enum MediaQuality { + #[default] // also change Config.MediaQuality props(default) on changes Balanced = 0, Worse = 1, } -impl Default for MediaQuality { - fn default() -> Self { - MediaQuality::Balanced // also change Config.MediaQuality props(default) on changes - } -} - /// Type of the key to generate. #[derive( - Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, + Debug, Default, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, )] #[repr(u8)] pub enum KeyGenType { + #[default] Default = 0, Rsa2048 = 1, Ed25519 = 2, } -impl Default for KeyGenType { - fn default() -> Self { - KeyGenType::Default - } -} - #[derive( - Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, + Debug, Default, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql, )] #[repr(i8)] pub enum VideochatType { + #[default] Unknown = 0, BasicWebrtc = 1, Jitsi = 2, } -impl Default for VideochatType { - fn default() -> Self { - VideochatType::Unknown - } -} - pub const DC_HANDSHAKE_CONTINUE_NORMAL_PROCESSING: i32 = 0x01; pub const DC_HANDSHAKE_STOP_NORMAL_PROCESSING: i32 = 0x02; pub const DC_HANDSHAKE_ADD_DELETE_JOB: i32 = 0x04; @@ -135,6 +111,7 @@ pub const DC_CHAT_ID_LAST_SPECIAL: ChatId = ChatId::new(9); #[derive( Debug, + Default, Display, Clone, Copy, @@ -150,6 +127,7 @@ pub const DC_CHAT_ID_LAST_SPECIAL: ChatId = ChatId::new(9); )] #[repr(u32)] pub enum Chattype { + #[default] Undefined = 0, Single = 100, Group = 120, @@ -157,12 +135,6 @@ pub enum Chattype { Broadcast = 160, } -impl Default for Chattype { - fn default() -> Self { - Chattype::Undefined - } -} - pub const DC_MSG_ID_DAYMARKER: u32 = 9; pub const DC_MSG_ID_LAST_SPECIAL: u32 = 9; diff --git a/src/contact.rs b/src/contact.rs index 3bc43537c..b86cbedb7 100644 --- a/src/contact.rs +++ b/src/contact.rs @@ -223,12 +223,24 @@ pub struct Contact { /// Possible origins of a contact. #[derive( - Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, FromPrimitive, ToPrimitive, FromSql, ToSql, + Debug, + Default, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + FromPrimitive, + ToPrimitive, + FromSql, + ToSql, )] #[repr(u32)] pub enum Origin { /// Unknown origin. Can be used as a minimum origin to specify that the caller does not care /// about origin of the contact. + #[default] Unknown = 0, /// The contact is a mailing list address, needed to unblock mailing lists @@ -287,12 +299,6 @@ pub enum Origin { ManuallyCreated = 0x0400_0000, } -impl Default for Origin { - fn default() -> Self { - Origin::Unknown - } -} - impl Origin { /// Contacts that are known, i. e. they came in via accepted contacts or /// themselves an accepted contact. Known contacts are shown in the diff --git a/src/download.rs b/src/download.rs index 1701dd644..fb56f729c 100644 --- a/src/download.rs +++ b/src/download.rs @@ -35,6 +35,7 @@ pub(crate) const MIN_DELETE_SERVER_AFTER: i64 = 48 * 60 * 60; /// Download state of the message. #[derive( Debug, + Default, Display, Clone, Copy, @@ -50,6 +51,7 @@ pub(crate) const MIN_DELETE_SERVER_AFTER: i64 = 48 * 60 * 60; #[repr(u32)] pub enum DownloadState { /// Message is fully downloaded. + #[default] Done = 0, /// Message is partially downloaded and can be fully downloaded at request. @@ -62,12 +64,6 @@ pub enum DownloadState { InProgress = 1000, } -impl Default for DownloadState { - fn default() -> Self { - DownloadState::Done - } -} - impl Context { // Returns validated download limit or `None` for "no limit". pub(crate) async fn download_limit(&self) -> Result> { diff --git a/src/message.rs b/src/message.rs index 9962a6cbe..44d6c1194 100644 --- a/src/message.rs +++ b/src/message.rs @@ -981,6 +981,7 @@ impl Message { /// For outgoing message, the message could be pending, already delivered or confirmed. #[derive( Debug, + Default, Clone, Copy, PartialEq, @@ -997,6 +998,7 @@ impl Message { #[repr(u32)] pub enum MessageState { /// Undefined message state. + #[default] Undefined = 0, /// Incoming *fresh* message. Fresh messages are neither noticed @@ -1039,12 +1041,6 @@ pub enum MessageState { OutMdnRcvd = 28, } -impl Default for MessageState { - fn default() -> Self { - MessageState::Undefined - } -} - impl std::fmt::Display for MessageState { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!( @@ -1914,6 +1910,7 @@ pub(crate) async fn rfc724_mid_exists( /// How a message is primarily displayed. #[derive( Debug, + Default, Display, Clone, Copy, @@ -1929,6 +1926,7 @@ pub(crate) async fn rfc724_mid_exists( #[repr(u32)] pub enum Viewtype { /// Unknown message type. + #[default] Unknown = 0, /// Text message. @@ -1982,12 +1980,6 @@ pub enum Viewtype { Webxdc = 80, } -impl Default for Viewtype { - fn default() -> Self { - Viewtype::Unknown - } -} - impl Viewtype { /// Whether a message with this [`Viewtype`] should have a file attachment. pub fn has_file(&self) -> bool { diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 92c43221d..4f5f2f1bf 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -131,10 +131,11 @@ pub(crate) enum MailinglistType { } #[derive( - Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql, + Debug, Default, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql, )] #[repr(u32)] pub enum SystemMessage { + #[default] Unknown = 0, /// Group name changed. @@ -177,12 +178,6 @@ pub enum SystemMessage { WebxdcInfoMessage = 32, } -impl Default for SystemMessage { - fn default() -> Self { - SystemMessage::Unknown - } -} - const MIME_AC_SETUP_FILE: &str = "application/autocrypt-setup"; impl MimeMessage { diff --git a/src/provider.rs b/src/provider.rs index fcf26852f..565d54d10 100644 --- a/src/provider.rs +++ b/src/provider.rs @@ -37,10 +37,11 @@ pub enum Protocol { } /// Socket security. -#[derive(Debug, Display, PartialEq, Eq, Copy, Clone, FromPrimitive, ToPrimitive)] +#[derive(Debug, Default, Display, PartialEq, Eq, Copy, Clone, FromPrimitive, ToPrimitive)] #[repr(u8)] pub enum Socket { /// Unspecified socket security, select automatically. + #[default] Automatic = 0, /// TLS connection. @@ -53,12 +54,6 @@ pub enum Socket { Plain = 3, } -impl Default for Socket { - fn default() -> Self { - Socket::Automatic - } -} - /// Pattern used to construct login usernames from email addresses. #[derive(Debug, PartialEq, Eq, Clone)] #[repr(u8)] diff --git a/src/scheduler/connectivity.rs b/src/scheduler/connectivity.rs index 54d8b1d42..6ddc9eede 100644 --- a/src/scheduler/connectivity.rs +++ b/src/scheduler/connectivity.rs @@ -27,9 +27,10 @@ pub enum Connectivity { // the top) take priority. This means that e.g. if any folder has an error - usually // because there is no internet connection - the connectivity for the whole // account will be `Notconnected`. -#[derive(Debug, Clone, PartialEq, Eq, EnumProperty, PartialOrd)] +#[derive(Debug, Default, Clone, PartialEq, Eq, EnumProperty, PartialOrd)] enum DetailedConnectivity { Error(String), + #[default] Uninitialized, Connecting, Working, @@ -40,12 +41,6 @@ enum DetailedConnectivity { NotConfigured, } -impl Default for DetailedConnectivity { - fn default() -> Self { - DetailedConnectivity::Uninitialized - } -} - impl DetailedConnectivity { fn to_basic(&self) -> Option { match self { diff --git a/src/token.rs b/src/token.rs index 048bc9f90..30acb81a0 100644 --- a/src/token.rs +++ b/src/token.rs @@ -13,21 +13,16 @@ use crate::tools::{create_id, time}; /// Token namespace #[derive( - Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql, + Debug, Default, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, ToSql, FromSql, )] #[repr(u32)] pub enum Namespace { + #[default] Unknown = 0, Auth = 110, InviteNumber = 100, } -impl Default for Namespace { - fn default() -> Self { - Namespace::Unknown - } -} - /// Saves a token to the database. pub async fn save( context: &Context,