From 5942553e7db201c861376325921efaae881a0b83 Mon Sep 17 00:00:00 2001 From: Todd Mortimer Date: Wed, 7 Apr 2021 18:09:46 -0400 Subject: [PATCH] Use iterators for Flag::from_strs() --- src/parse.rs | 6 +++--- src/types/mod.rs | 8 +++++--- src/types/unsolicited_response.rs | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/parse.rs b/src/parse.rs index bc4a9b8..b871dc2 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -109,7 +109,7 @@ pub fn parse_fetches( use imap_proto::AttributeValue; match attr { AttributeValue::Flags(flags) => { - fetch.flags.extend(Flag::from_vec(flags)); + fetch.flags.extend(Flag::from_strs(flags)); } AttributeValue::Uid(uid) => fetch.uid = Some(*uid), AttributeValue::Rfc822Size(sz) => fetch.size = Some(*sz), @@ -269,7 +269,7 @@ pub fn parse_mailbox( mailbox.unseen = Some(n); } Some(ResponseCode::PermanentFlags(flags)) => { - mailbox.permanent_flags.extend(Flag::from_vec(&flags)); + mailbox.permanent_flags.extend(Flag::from_strs(flags)); } _ => {} } @@ -293,7 +293,7 @@ pub fn parse_mailbox( mailbox.recent = r; } MailboxDatum::Flags(flags) => { - mailbox.flags.extend(Flag::from_vec(&flags)); + mailbox.flags.extend(Flag::from_strs(flags)); } _ => {} } diff --git a/src/types/mod.rs b/src/types/mod.rs index 78133ab..b1b1d2a 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -169,9 +169,11 @@ impl Flag<'static> { } } - /// Helper function to transform a [`Vec`] of flag strings into a [`Vec`] of [`Flag`]. - pub fn from_vec(v: &[S]) -> Vec { - v.iter().map(|s| Self::from(s.to_string())).collect() + /// Helper function to transform Strings into owned Flags + pub fn from_strs( + v: impl IntoIterator, + ) -> impl Iterator> { + v.into_iter().map(|s| Flag::from(s.to_string())) } } diff --git a/src/types/unsolicited_response.rs b/src/types/unsolicited_response.rs index f755ea2..80aa46a 100644 --- a/src/types/unsolicited_response.rs +++ b/src/types/unsolicited_response.rs @@ -173,7 +173,7 @@ impl<'a> TryFrom> for UnsolicitedResponse { } Response::MailboxData(MailboxDatum::Recent(n)) => Ok(UnsolicitedResponse::Recent(n)), Response::MailboxData(MailboxDatum::Flags(flags)) => { - Ok(UnsolicitedResponse::Flags(Flag::from_vec(&flags))) + Ok(UnsolicitedResponse::Flags(Flag::from_strs(flags).collect())) } Response::MailboxData(MailboxDatum::Exists(n)) => Ok(UnsolicitedResponse::Exists(n)), Response::MailboxData(MailboxDatum::MetadataUnsolicited { mailbox, values }) => { @@ -288,7 +288,7 @@ impl<'a> TryFrom<&ImapProtoAttributeValue<'a>> for AttributeValue { fn try_from(val: &ImapProtoAttributeValue<'a>) -> Result { match val { ImapProtoAttributeValue::Flags(flags) => { - Ok(AttributeValue::Flags(Flag::from_vec(&flags))) + Ok(AttributeValue::Flags(Flag::from_strs(flags).collect())) } ImapProtoAttributeValue::ModSeq(seq) => Ok(AttributeValue::ModSeq(*seq)), ImapProtoAttributeValue::Uid(uid) => Ok(AttributeValue::Uid(*uid)),