From 61bccb9dccdee21b6c9af794eded885a5b59a954 Mon Sep 17 00:00:00 2001 From: Damien Collard Date: Sun, 10 Feb 2019 22:37:43 +0100 Subject: [PATCH 1/3] Avoid allocating a key at each conversion to lowercase. --- src/env.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/env.rs b/src/env.rs index ce670695..6111e4a5 100644 --- a/src/env.rs +++ b/src/env.rs @@ -78,7 +78,7 @@ impl Source for Environment { // Define a prefix pattern to test and exclude from keys let prefix_pattern = match self.prefix { - Some(ref prefix) => Some(prefix.clone() + "_"), + Some(ref prefix) => Some((prefix.clone() + "_").to_lowercase()), _ => None, }; @@ -94,7 +94,7 @@ impl Source for Environment { if let Some(ref prefix_pattern) = prefix_pattern { if key .to_lowercase() - .starts_with(&prefix_pattern.to_lowercase()) + .starts_with(prefix_pattern) { // Remove this prefix from the key key = key[prefix_pattern.len()..].to_string(); From 8ad1ec1994f127eef7faf8049fa76af0f921d16e Mon Sep 17 00:00:00 2001 From: Damien Collard Date: Sun, 10 Feb 2019 22:38:51 +0100 Subject: [PATCH 2/3] Avoid converting twice to lowercase. --- src/env.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/env.rs b/src/env.rs index 6111e4a5..fbf12f44 100644 --- a/src/env.rs +++ b/src/env.rs @@ -88,14 +88,11 @@ impl Source for Environment { continue; } - let mut key = key.to_string(); + let mut key = key.to_lowercase(); // Check for prefix if let Some(ref prefix_pattern) = prefix_pattern { - if key - .to_lowercase() - .starts_with(prefix_pattern) - { + if key.starts_with(prefix_pattern) { // Remove this prefix from the key key = key[prefix_pattern.len()..].to_string(); } else { @@ -110,7 +107,7 @@ impl Source for Environment { } m.insert( - key.to_lowercase(), + key, Value::new(Some(&uri), ValueKind::String(value)), ); } From ad43bb8b3f8ffc5b0a875cd5590c9ba426410442 Mon Sep 17 00:00:00 2001 From: Damien Collard Date: Sun, 10 Feb 2019 22:39:54 +0100 Subject: [PATCH 3/3] Simplify handling of separator in Source::collect(). --- src/env.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/env.rs b/src/env.rs index fbf12f44..4e35c2b8 100644 --- a/src/env.rs +++ b/src/env.rs @@ -71,11 +71,6 @@ impl Source for Environment { let mut m = HashMap::new(); let uri: String = "the environment".into(); - let separator = match self.separator { - Some(ref separator) => separator, - _ => "", - }; - // Define a prefix pattern to test and exclude from keys let prefix_pattern = match self.prefix { Some(ref prefix) => Some((prefix.clone() + "_").to_lowercase()), @@ -101,8 +96,7 @@ impl Source for Environment { } } - // If separator is given replace with `.` - if !separator.is_empty() { + if let Some(ref separator) = self.separator { key = key.replace(separator, "."); }