chiark / gitweb /
server: MetadataFieldIterator::parse
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 8 Aug 2021 19:49:42 +0000 (20:49 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 8 Aug 2021 19:49:42 +0000 (20:49 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/multipart.rs

index 112712bb8d5f4ad79d78f5e66473039b4357f46f..3f918b77c5aa76c80f162619553a32902dfaf81f 100644 (file)
@@ -86,6 +86,15 @@ impl<'b> MetadataFieldIterator<'b> {
     last: Some(0),
     iter: memchr::Memchr::new(b'\n', buf),
   } }
+
+  #[throws(AE)]
+  pub fn parse<T>(&mut self) -> Option<T>
+  where T: FromStr,
+        T::Err: std::error::Error + Sync + Send + 'static,
+  {
+    let s = if let Some(r) = self.next() { r? } else { return None };
+    Some(s.parse()?)
+  }
 }
                                       
 impl<'b> Iterator for MetadataFieldIterator<'b> {