diff --git a/Cargo.toml b/Cargo.toml index 7280917..15e1146 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,8 +45,7 @@ harness = false default = ["file-transport", "smtp-transport", "sendmail-transport", "builder"] builder = ["email", "mime", "time", "base64", "uuid"] unstable = [] -serde-impls = ["serde"] -file-transport = ["serde-impls", "serde_json"] +file-transport = ["serde", "serde_json"] smtp-transport = ["bufstream", "native-tls", "base64", "nom", "hostname"] sendmail-transport = [] connection-pool = ["r2d2"] diff --git a/src/file/mod.rs b/src/file/mod.rs index 46e84b3..049fbb7 100644 --- a/src/file/mod.rs +++ b/src/file/mod.rs @@ -16,7 +16,7 @@ pub mod error; /// Writes the content and the envelope information to a file #[derive(Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct FileTransport { path: PathBuf, } @@ -31,7 +31,7 @@ impl FileTransport { } #[derive(PartialEq, Eq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] struct SerializableEmail { envelope: Envelope, message_id: String, diff --git a/src/lib.rs b/src/lib.rs index ff2a541..482b17d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -46,7 +46,7 @@ use std::str::FromStr; /// Email address #[derive(PartialEq, Eq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct EmailAddress(String); impl EmailAddress { @@ -96,7 +96,7 @@ impl AsRef for EmailAddress { /// /// We only accept mailboxes, and do not support source routes (as per RFC). #[derive(PartialEq, Eq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Envelope { /// The envelope recipients' addresses /// diff --git a/src/sendmail/mod.rs b/src/sendmail/mod.rs index 40e74e1..94644ac 100644 --- a/src/sendmail/mod.rs +++ b/src/sendmail/mod.rs @@ -14,7 +14,7 @@ pub mod error; /// Sends an email using the `sendmail` command #[derive(Debug, Default)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct SendmailTransport { command: String, } diff --git a/src/smtp/authentication.rs b/src/smtp/authentication.rs index 76f5d71..9eabac0 100644 --- a/src/smtp/authentication.rs +++ b/src/smtp/authentication.rs @@ -31,7 +31,7 @@ impl, T: Into> IntoCredentials for (S, T) { /// Contains user credentials #[derive(PartialEq, Eq, Clone, Hash, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Credentials { authentication_identity: String, secret: String, @@ -49,7 +49,7 @@ impl Credentials { /// Represents authentication mechanisms #[derive(PartialEq, Eq, Copy, Clone, Hash, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum Mechanism { /// PLAIN authentication mechanism /// RFC 4616: https://tools.ietf.org/html/rfc4616 diff --git a/src/smtp/commands.rs b/src/smtp/commands.rs index 8176826..03c79ab 100644 --- a/src/smtp/commands.rs +++ b/src/smtp/commands.rs @@ -13,7 +13,7 @@ use std::fmt::{self, Display, Formatter}; /// EHLO command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct EhloCommand { client_id: ClientId, } @@ -34,7 +34,7 @@ impl EhloCommand { /// STARTTLS command #[derive(PartialEq, Clone, Debug, Copy)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct StarttlsCommand; impl Display for StarttlsCommand { @@ -45,7 +45,7 @@ impl Display for StarttlsCommand { /// MAIL command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct MailCommand { sender: Option, parameters: Vec, @@ -74,7 +74,7 @@ impl MailCommand { /// RCPT command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct RcptCommand { recipient: EmailAddress, parameters: Vec, @@ -102,7 +102,7 @@ impl RcptCommand { /// DATA command #[derive(PartialEq, Clone, Debug, Copy)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct DataCommand; impl Display for DataCommand { @@ -113,7 +113,7 @@ impl Display for DataCommand { /// QUIT command #[derive(PartialEq, Clone, Debug, Copy)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct QuitCommand; impl Display for QuitCommand { @@ -124,7 +124,7 @@ impl Display for QuitCommand { /// NOOP command #[derive(PartialEq, Clone, Debug, Copy)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct NoopCommand; impl Display for NoopCommand { @@ -135,7 +135,7 @@ impl Display for NoopCommand { /// HELP command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct HelpCommand { argument: Option, } @@ -159,7 +159,7 @@ impl HelpCommand { /// VRFY command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct VrfyCommand { argument: String, } @@ -180,7 +180,7 @@ impl VrfyCommand { /// EXPN command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct ExpnCommand { argument: String, } @@ -201,7 +201,7 @@ impl ExpnCommand { /// RSET command #[derive(PartialEq, Clone, Debug, Copy)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct RsetCommand; impl Display for RsetCommand { @@ -212,7 +212,7 @@ impl Display for RsetCommand { /// AUTH command #[derive(PartialEq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct AuthCommand { mechanism: Mechanism, credentials: Credentials, diff --git a/src/smtp/extension.rs b/src/smtp/extension.rs index 1c11597..fbe3fda 100644 --- a/src/smtp/extension.rs +++ b/src/smtp/extension.rs @@ -14,7 +14,7 @@ const DEFAULT_DOMAIN_CLIENT_ID: &str = "localhost"; /// Client identifier, the parameter to `EHLO` #[derive(PartialEq, Eq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum ClientId { /// A fully-qualified domain name Domain(String), @@ -54,7 +54,7 @@ impl ClientId { /// Supported ESMTP keywords #[derive(PartialEq, Eq, Hash, Copy, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum Extension { /// 8BITMIME keyword /// @@ -85,7 +85,7 @@ impl Display for Extension { /// Contains information about an SMTP server #[derive(Clone, Debug, Eq, PartialEq)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct ServerInfo { /// Server name /// @@ -178,7 +178,7 @@ impl ServerInfo { /// A `MAIL FROM` extension parameter #[derive(PartialEq, Eq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum MailParameter { /// `BODY` parameter Body(MailBodyParameter), @@ -215,7 +215,7 @@ impl Display for MailParameter { /// Values for the `BODY` parameter to `MAIL FROM` #[derive(PartialEq, Eq, Clone, Debug, Copy)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum MailBodyParameter { /// `7BIT` SevenBit, @@ -234,7 +234,7 @@ impl Display for MailBodyParameter { /// A `RCPT TO` extension parameter #[derive(PartialEq, Eq, Clone, Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum RcptParameter { /// Custom parameter Other { diff --git a/src/smtp/util.rs b/src/smtp/util.rs index f16c790..18b17b5 100644 --- a/src/smtp/util.rs +++ b/src/smtp/util.rs @@ -4,7 +4,7 @@ use std::fmt::{Display, Formatter, Result as FmtResult}; /// Encode a string as xtext #[derive(Debug)] -#[cfg_attr(feature = "serde-impls", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct XText<'a>(pub &'a str); impl<'a> Display for XText<'a> {