From d6f9d14e85a0139620b5a70a3f172177106e5fb5 Mon Sep 17 00:00:00 2001 From: Leynos Date: Tue, 15 Jul 2025 18:28:27 +0100 Subject: [PATCH] Avoid allocation when measuring indent --- src/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 575fbc08..bedd0844 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -678,8 +678,13 @@ pub fn renumber_lists(lines: &[String]) -> Vec { continue; } - let indent_part: String = line.chars().take_while(|c| c.is_whitespace()).collect(); - let indent = indent_len(&indent_part); + // Avoid allocating when just measuring indentation + let indent_end = line + .char_indices() + .find(|&(_, c)| !c.is_whitespace()) + .map_or_else(|| line.len(), |(i, _)| i); + let indent_str = &line[..indent_end]; + let indent = indent_len(indent_str); drop_deeper(indent, &mut counters); out.push(line.clone()); }