From b7bc84297979b7ad3f48e33300a149b406e8fb2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20B=C3=B8cker-Larsen?= Date: Sun, 20 Dec 2020 13:03:54 +0800 Subject: [PATCH] fix: correct lifetimes and types for append --- src/client.rs | 19 ++++++++----------- tests/imap_integration.rs | 7 +++---- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/client.rs b/src/client.rs index c5cfc82..4fc4c25 100644 --- a/src/client.rs +++ b/src/client.rs @@ -89,13 +89,13 @@ pub struct AppendCmd<'a, T: Read + Write> { session: &'a mut Session, content: &'a [u8], mailbox: &'a str, - flags: Vec<&'a Flag<'a>>, + flags: Vec>, date: Option>, } impl<'a, T: Read + Write> AppendCmd<'a, T> { /// Append a flag - pub fn flag(&mut self, flag: &'a Flag<'a>) -> &mut Self { + pub fn flag(&mut self, flag: Flag<'a>) -> &mut Self { self.flags.push(flag); self } @@ -108,11 +108,12 @@ impl<'a, T: Read + Write> AppendCmd<'a, T> { /// Run command when set up #[must_use] - pub fn run(&self) -> Result<()> { + pub fn run(&mut self) -> Result<()> { let flagstr = self .flags + .clone() .into_iter() - .filter(|f| **f != Flag::Recent) + .filter(|f| *f != Flag::Recent) .map(|f| f.to_string()) .collect::>() .join(" "); @@ -1157,15 +1158,11 @@ impl Session { /// > If a date-time is specified, the internal date SHOULD be set in /// > the resulting message; otherwise, the internal date of the /// > resulting message is set to the current date and time by default. - pub fn append<'a, S: AsRef, B: AsRef<[u8]>>( - &mut self, - mailbox: S, - content: B, - ) -> AppendCmd<'a, T> { + pub fn append<'a>(&'a mut self, mailbox: &'a str, content: &'a [u8]) -> AppendCmd<'a, T> { AppendCmd { session: self, - content: content.as_ref(), - mailbox: mailbox.as_ref(), + content, + mailbox, flags: Vec::new(), date: None, } diff --git a/tests/imap_integration.rs b/tests/imap_integration.rs index abecb0f..b32a0c0 100644 --- a/tests/imap_integration.rs +++ b/tests/imap_integration.rs @@ -253,7 +253,7 @@ fn append() { let mbox = "INBOX"; c.select(mbox).unwrap(); //append - c.append(mbox, e.message_to_string().unwrap()) + c.append(mbox, e.message_to_string().unwrap().as_bytes()) .run() .unwrap(); @@ -303,7 +303,7 @@ fn append_with_flags() { c.select(mbox).unwrap(); //append let flags: &[Flag] = &[Flag::Seen, Flag::Flagged]; - c.append(mbox, e.message_to_string().unwrap()) + c.append(mbox, e.message_to_string().unwrap().as_bytes()) .flag(Flag::Seen) .flag(Flag::Flagged) .run() @@ -359,11 +359,10 @@ fn append_with_flags_and_date() { let mbox = "INBOX"; c.select(mbox).unwrap(); // append - let flags: &[Flag] = &[Flag::Seen, Flag::Flagged]; let date = FixedOffset::east(8 * 3600) .ymd(2020, 12, 13) .and_hms(13, 36, 36); - c.append(mbox, e.message_to_string().unwrap()) + c.append(mbox, e.message_to_string().unwrap().as_bytes()) .flag(Flag::Seen) .flag(Flag::Flagged) .internal_date(date)