diff options
author | Kartikaya Gupta <kats@seldon.staktrace.com> | 2016-05-27 13:24:44 -0400 |
---|---|---|
committer | Kartikaya Gupta <kats@seldon.staktrace.com> | 2016-05-27 13:24:44 -0400 |
commit | c1236758a95f15cf99e867349a4381c6fa67e6c0 (patch) | |
tree | 140c1177b14b56ed8f9b980f822e189070d025aa /src/lib.rs | |
parent | b973e0968b29f70f6aa44b29f3300157ff050da6 (diff) |
Super basic header parser
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 24 |
1 files changed, 23 insertions, 1 deletions
@@ -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"); } } |