Skip to content

Commit e4c5cf8

Browse files
chore: Use LazyLock for regexes
1 parent 0f21c80 commit e4c5cf8

1 file changed

Lines changed: 11 additions & 12 deletions

File tree

crates/stackable-operator/src/v2/builder/pod/container.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::{
22
collections::{BTreeMap, BTreeSet},
33
str::FromStr,
4+
sync::LazyLock,
45
vec,
56
};
67

@@ -18,6 +19,14 @@ use crate::{
1819
},
1920
};
2021

22+
/// Pattern for an escaped environment variable reference, e.g. `$$(ESCAPED_REFERENCE)`
23+
static ESCAPED_ENV_VARS_PATTERN: LazyLock<Regex> =
24+
LazyLock::new(|| Regex::new(r"\$\$\([^\)]*\)").expect("should be a valid regular expression"));
25+
26+
/// Pattern for a referenced environment variable, e.g. `$(ENV_VAR)`
27+
static REFERENCED_ENV_VARS_PATTERN: LazyLock<Regex> =
28+
LazyLock::new(|| Regex::new(r"\$\(([^\)]+)\)").expect("should be a valid regular expression"));
29+
2130
#[derive(Snafu, Debug, EnumDiscriminants)]
2231
#[strum_discriminants(derive(IntoStaticStr))]
2332
pub enum Error {
@@ -188,23 +197,13 @@ pub struct EnvVarDependencyResolver<'a> {
188197
///
189198
/// Long dependency chains could slow down the operator.
190199
max_recursion_depth: usize,
191-
192-
/// Pattern for an escaped environment variable reference, e.g. `$$(ESCAPED_REFERENCE)`
193-
escaped_env_vars_pattern: Regex,
194-
195-
/// Pattern for a referenced environment variable, e.g. `$(ENV_VAR)`
196-
referenced_env_vars_pattern: Regex,
197200
}
198201

199202
impl<'a> EnvVarDependencyResolver<'a> {
200203
pub fn new(env_vars: &'a EnvVarSet, max_recursion_depth: usize) -> Self {
201204
Self {
202205
env_vars,
203206
max_recursion_depth,
204-
escaped_env_vars_pattern: Regex::new(r"\$\$\([^\)]*\)")
205-
.expect("should be a valid regular expression"),
206-
referenced_env_vars_pattern: Regex::new(r"\$\(([^\)]+)\)")
207-
.expect("should be a valid regular expression"),
208207
}
209208
}
210209

@@ -491,9 +490,9 @@ impl<'a> EnvVarDependencyResolver<'a> {
491490
/// );
492491
/// ```
493492
pub fn referenced_env_vars(&self, value: &str) -> Vec<&'a EnvVar> {
494-
let value_without_escapes = self.escaped_env_vars_pattern.replace_all(value, "");
493+
let value_without_escapes = ESCAPED_ENV_VARS_PATTERN.replace_all(value, "");
495494

496-
self.referenced_env_vars_pattern
495+
REFERENCED_ENV_VARS_PATTERN
497496
.captures_iter(&value_without_escapes)
498497
.filter_map(|capture| capture.get(1))
499498
.filter_map(|regex_match| EnvVarName::from_str(regex_match.as_str()).ok())

0 commit comments

Comments
 (0)