summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorKartikaya Gupta <kats@seldon.staktrace.com>2016-05-27 13:24:44 -0400
committerKartikaya Gupta <kats@seldon.staktrace.com>2016-05-27 13:24:44 -0400
commitc1236758a95f15cf99e867349a4381c6fa67e6c0 (patch)
tree140c1177b14b56ed8f9b980f822e189070d025aa /src/lib.rs
parentb973e0968b29f70f6aa44b29f3300157ff050da6 (diff)
Super basic header parser
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index cdfbe1a..999e89f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,28 @@
+#[derive(Debug)]
+pub struct MailHeader<'a> {
+ name: &'a str,
+ value: &'a str,
+}
+
+#[derive(Debug)]
+pub struct MailParseError {
+ description: String,
+ position: usize,
+}
+
+pub fn parse_header(raw_data : &str) -> Result<MailHeader, MailParseError> {
+ let ix = raw_data.find(':').ok_or(MailParseError { description: "No ':' found in header".to_string(), position: raw_data.len() });
+ return ix.map(|ix| MailHeader { name: &raw_data[0..ix], value: &raw_data[ix + 1 ..] });
+}
+
#[cfg(test)]
mod tests {
+ use super::*;
+
#[test]
- fn it_works() {
+ fn parse_basic_header() {
+ let parsed = parse_header("Key: Value").expect("");
+ assert_eq!(parsed.name, "Key");
+ assert_eq!(parsed.value, " Value");
}
}