summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJos van den Oever <jos@vandenoever.info>2016-12-03 14:41:20 +0100
committerstaktrace <accounts.github@staktrace.com>2016-12-04 02:18:36 -0500
commitb5a5880223f175bfdee17671f028b4bc1a387d95 (patch)
treee27cea6655698ed07c53825fccdaa5d94df018f7 /src
parent0f0567f6209637b84287334489127adc31d9f453 (diff)
Less allocation by using case insensitive string comparison
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs7
1 files 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<MailHeader<'a>> {
fn get_first_value(&self, key: &str) -> Result<Option<String>, 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<MailHeader<'a>> {
}
fn get_all_values(&self, key: &str) -> Result<Vec<String>, MailParseError> {
- let lower_key = key.to_lowercase();
let mut values: Vec<String> = 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()));
}
}