Skip to content

Commit 2d978c6

Browse files
committed
perf: reduce allocation in replace source
1 parent 488a9ca commit 2d978c6

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/replace_source.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,6 @@ impl<'a, T: Source> StreamChunks<'a> for ReplaceSource<T> {
430430
// Insert replacement content split into chunks by lines
431431

432432
let repl = &repls[i];
433-
let lines: Vec<&str> = split_into_lines(&repl.content).collect();
434433
let mut replacement_name_index = mapping
435434
.original
436435
.as_ref()
@@ -448,7 +447,9 @@ impl<'a, T: Source> StreamChunks<'a> for ReplaceSource<T> {
448447
}
449448
replacement_name_index = global_index;
450449
}
451-
for (m, content_line) in lines.iter().enumerate() {
450+
let mut consumed_len = 0;
451+
for content_line in split_into_lines(&repl.content) {
452+
consumed_len += content_line.len();
452453
on_chunk(
453454
Some(Cow::Owned(content_line.to_string())),
454455
Mapping {
@@ -471,8 +472,7 @@ impl<'a, T: Source> StreamChunks<'a> for ReplaceSource<T> {
471472
);
472473
// Only the first chunk has name assigned
473474
replacement_name_index = None;
474-
475-
if m == lines.len() - 1 && !content_line.ends_with('\n') {
475+
if consumed_len == repl.content.len() && !content_line.ends_with('\n') {
476476
if generated_column_offset_line == line {
477477
generated_column_offset += content_line.len() as i64;
478478
} else {

0 commit comments

Comments
 (0)