diff --git a/src/lib.rs b/src/lib.rs index a13de4035..06f676298 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,6 @@ #![forbid(unsafe_code)] #![deny(clippy::correctness, missing_debug_implementations, clippy::all)] #![allow(clippy::match_bool)] -#![feature(ptr_wrapping_offset_from)] -#![feature(drain_filter)] #[macro_use] extern crate failure_derive; diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 36a21cd62..39814361c 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -178,10 +178,16 @@ impl<'a> MimeMessage<'a> { #[allow(clippy::cognitive_complexity)] fn parse_headers(&mut self) -> Result<()> { if self.get(HeaderDef::AutocryptSetupMessage).is_some() { - self.parts.drain_filter(|part| { - part.mimetype.is_some() - && part.mimetype.as_ref().unwrap().as_ref() != MIME_AC_SETUP_FILE - }); + self.parts = self + .parts + .iter() + .filter(|part| { + part.mimetype.is_none() + || part.mimetype.as_ref().unwrap().as_ref() == MIME_AC_SETUP_FILE + }) + .cloned() + .collect(); + if self.parts.len() == 1 { self.is_system_message = SystemMessage::AutocryptSetupMessage; } else {