summaryrefslogtreecommitdiffstats
path: root/melib/src
diff options
context:
space:
mode:
Diffstat (limited to 'melib/src')
-rw-r--r--melib/src/conf.rs29
-rw-r--r--melib/src/email/attachment_types.rs8
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)]