Skip to content

Commit 11602b0

Browse files
Merge pull request #209 from eduardocanellas/optimize-env
refactor(env): optimize and reduce allocations
2 parents 06bf59b + 55e8242 commit 11602b0

File tree

1 file changed

+6
-16
lines changed

1 file changed

+6
-16
lines changed

src/env.rs

+6-16
Original file line numberDiff line numberDiff line change
@@ -83,36 +83,26 @@ impl Source for Environment {
8383
let mut m = HashMap::new();
8484
let uri: String = "the environment".into();
8585

86-
let separator = match self.separator {
87-
Some(ref separator) => separator,
88-
_ => "",
89-
};
90-
91-
let group_separator = match self.separator {
92-
Some(ref separator) => separator,
93-
_ => "_",
94-
};
86+
let separator = self.separator.as_deref().unwrap_or("");
87+
let group_separator = self.separator.as_deref().unwrap_or("_");
9588

9689
// Define a prefix pattern to test and exclude from keys
9790
let prefix_pattern = self
9891
.prefix
9992
.as_ref()
100-
.map(|prefix| format!("{}{}", prefix.clone(), group_separator));
93+
.map(|prefix| format!("{}{}", prefix, group_separator).to_lowercase());
10194

10295
for (key, value) in env::vars() {
10396
// Treat empty environment variables as unset
10497
if self.ignore_empty && value.is_empty() {
10598
continue;
10699
}
107100

108-
let mut key = key.to_string();
101+
let mut key = key.to_lowercase();
109102

110103
// Check for prefix
111104
if let Some(ref prefix_pattern) = prefix_pattern {
112-
if key
113-
.to_lowercase()
114-
.starts_with(&prefix_pattern.to_lowercase())
115-
{
105+
if key.starts_with(prefix_pattern) {
116106
// Remove this prefix from the key
117107
key = key[prefix_pattern.len()..].to_string();
118108
} else {
@@ -141,7 +131,7 @@ impl Source for Environment {
141131
ValueKind::String(value)
142132
};
143133

144-
m.insert(key.to_lowercase(), Value::new(Some(&uri), value));
134+
m.insert(key, Value::new(Some(&uri), value));
145135
}
146136

147137
Ok(m)

0 commit comments

Comments
 (0)