From 21138c353bf04c63e1b1c346c07d80f049c90739 Mon Sep 17 00:00:00 2001 From: Damian Poddebniak Date: Sat, 22 May 2021 22:56:55 +0200 Subject: [PATCH] Introduce feature-gated `serde` dependency * derive `serde::{Deserialize, Serialize}` for `Capability` and `AuthMechanism`. --- Cargo.toml | 7 +++++++ src/types.rs | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 6527d90..14c9699 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,13 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +default = [] +serdex = ["serde"] + [dependencies] nom = "6" abnf-core = "0.4.0" + +# Optional +serde = { version = "1.0", features = ["derive"], optional = true } diff --git a/src/types.rs b/src/types.rs index ba3aecb..1db9f3f 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,4 +1,6 @@ use crate::utils::escape_quoted; +#[cfg(feature = "serdex")] +use serde::{Deserialize, Serialize}; use std::io::Write; #[derive(Clone, Debug, PartialEq, Eq)] @@ -321,6 +323,7 @@ impl EhloOkResp { // ------------------------------------------------------------------------------------------------- +#[cfg_attr(feature = "serdex", derive(Serialize, Deserialize))] #[derive(Debug, Clone, PartialEq, Eq)] pub enum Capability { // Send as mail [RFC821] @@ -502,6 +505,7 @@ impl Capability { } } +#[cfg_attr(feature = "serdex", derive(Serialize, Deserialize))] #[derive(Debug, Clone, PartialEq, Eq)] pub enum AuthMechanism { Plain,