Skip to content

Commit 93d798d

Browse files
authored
perf: set capacity before allocating pattern string (#146)
Small inconsequential improvement.
1 parent 5f3139c commit 93d798d

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ sync = ["deno_package_json/sync"]
2121
workspace = ["deno_json", "deno_semver", "package_json"]
2222

2323
[dependencies]
24+
capacity_builder = { version = "0.5.0" }
2425
indexmap = { version = "2", features = ["serde"] }
2526
jsonc-parser = { version = "0.26.0", features = ["serde"], optional = true }
2627
log = "0.4.20"

src/glob/mod.rs

+12-9
Original file line numberDiff line numberDiff line change
@@ -631,17 +631,20 @@ impl GlobPattern {
631631
Some(p) => (true, p),
632632
None => (false, p),
633633
};
634+
let base_str = base.to_string_lossy().replace('\\', "/");
634635
let p = p.strip_prefix("./").unwrap_or(p);
635-
let mut pattern = String::new();
636-
if is_negated {
637-
pattern.push('!');
638-
}
639-
pattern.push_str(&base.to_string_lossy().replace('\\', "/"));
640-
if !pattern.ends_with('/') {
641-
pattern.push('/');
642-
}
643636
let p = p.strip_suffix('/').unwrap_or(p);
644-
pattern.push_str(p);
637+
let pattern = capacity_builder::StringBuilder::<String>::build(|builder| {
638+
if is_negated {
639+
builder.append('!');
640+
}
641+
builder.append(&base_str);
642+
if !base_str.ends_with('/') {
643+
builder.append('/');
644+
}
645+
builder.append(p);
646+
})
647+
.unwrap();
645648
GlobPattern::new(&pattern)
646649
}
647650

0 commit comments

Comments
 (0)