From b5a5880223f175bfdee17671f028b4bc1a387d95 Mon Sep 17 00:00:00 2001 From: Jos van den Oever Date: Sat, 3 Dec 2016 14:41:20 +0100 Subject: Less allocation by using case insensitive string comparison --- src/lib.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 91ae039..46d0530 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ extern crate base64; extern crate encoding; extern crate quoted_printable; +use std::ascii::AsciiExt; use std::error; use std::fmt; use std::ops::Deref; @@ -399,9 +400,8 @@ pub trait MailHeaderMap { impl<'a> MailHeaderMap for Vec> { fn get_first_value(&self, key: &str) -> Result, MailParseError> { - let lower_key = key.to_lowercase(); for x in self { - if try!(x.get_key()).to_lowercase() == lower_key { + if try!(x.get_key()).eq_ignore_ascii_case(key) { return x.get_value().map(|v| Some(v)); } } @@ -409,10 +409,9 @@ impl<'a> MailHeaderMap for Vec> { } fn get_all_values(&self, key: &str) -> Result, MailParseError> { - let lower_key = key.to_lowercase(); let mut values: Vec = Vec::new(); for x in self { - if try!(x.get_key()).to_lowercase() == lower_key { + if try!(x.get_key()).eq_ignore_ascii_case(key) { values.push(try!(x.get_value())); } } -- cgit v1.2.3