diff options
Diffstat (limited to 'melib/src')
-rw-r--r-- | melib/src/conf.rs | 29 | ||||
-rw-r--r-- | melib/src/email/attachment_types.rs | 8 |
2 files changed, 23 insertions, 14 deletions
diff --git a/melib/src/conf.rs b/melib/src/conf.rs index 1b7fed64..985e38eb 100644 --- a/melib/src/conf.rs +++ b/melib/src/conf.rs @@ -78,9 +78,9 @@ pub struct FolderConf { pub alias: Option<String>, #[serde(default = "true_val")] pub autoload: bool, - #[serde(deserialize_with = "toggleflag_de")] + #[serde(default)] pub subscribe: ToggleFlag, - #[serde(deserialize_with = "toggleflag_de")] + #[serde(default)] pub ignore: ToggleFlag, #[serde(default = "none")] pub usage: Option<SpecialUsageMailbox>, @@ -158,18 +158,6 @@ impl ToggleFlag { } } -pub fn toggleflag_de<'de, D>(deserializer: D) -> std::result::Result<ToggleFlag, D::Error> -where - D: Deserializer<'de>, -{ - let s = <bool>::deserialize(deserializer); - Ok(match s { - Err(_) => ToggleFlag::Unset, - Ok(true) => ToggleFlag::True, - Ok(false) => ToggleFlag::False, - }) -} - impl Serialize for ToggleFlag { fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error> where @@ -182,3 +170,16 @@ impl Serialize for ToggleFlag { } } } + +impl<'de> Deserialize<'de> for ToggleFlag { + fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error> + where + D: Deserializer<'de>, + { + let s = <bool>::deserialize(deserializer); + Ok(match s? { + true => ToggleFlag::True, + false => ToggleFlag::False, + }) + } +} diff --git a/melib/src/email/attachment_types.rs b/melib/src/email/attachment_types.rs index ac05affb..2a6e74d9 100644 --- a/melib/src/email/attachment_types.rs +++ b/melib/src/email/attachment_types.rs @@ -249,6 +249,14 @@ impl ContentType { _ => None, } } + + pub fn parts(&self) -> Option<&Vec<Attachment>> { + if let ContentType::Multipart { ref parts, .. } = self { + Some(parts) + } else { + None + } + } } #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] |