From 56443677505ace87592c6ff51e8ebc60ed50a1e3 Mon Sep 17 00:00:00 2001 From: Jaromir Obr Date: Sat, 20 Nov 2021 19:58:19 +0100 Subject: [PATCH] Optimized getting of row length in insert/delete/split --- src/row.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/row.rs b/src/row.rs index 0564d13..8fd1383 100644 --- a/src/row.rs +++ b/src/row.rs @@ -72,16 +72,13 @@ impl Row { return; } let mut result: String = String::new(); - let mut length = 0; for (index, grapheme) in self.string[..].graphemes(true).enumerate() { - length += 1; if index == at { - length += 1; result.push(c); } result.push_str(grapheme); } - self.len = length; + self.len += 1; self.string = result; } pub fn delete(&mut self, at: usize) { @@ -89,14 +86,12 @@ impl Row { return; } let mut result: String = String::new(); - let mut length = 0; for (index, grapheme) in self.string[..].graphemes(true).enumerate() { if index != at { - length += 1; result.push_str(grapheme); } } - self.len = length; + self.len -= 1; self.string = result; } pub fn append(&mut self, new: &Self) { @@ -107,17 +102,16 @@ impl Row { let mut row: String = String::new(); let mut length = 0; let mut splitted_row: String = String::new(); - let mut splitted_length = 0; for (index, grapheme) in self.string[..].graphemes(true).enumerate() { if index < at { length += 1; row.push_str(grapheme); } else { - splitted_length += 1; splitted_row.push_str(grapheme); } } + let splitted_length = self.len - length; self.string = row; self.len = length; self.is_highlighted = false;