Made add in codegen faster

This commit is contained in:
2026-06-15 14:21:53 +02:00
parent 5f0b1fa67a
commit bed7b17134
3 changed files with 18 additions and 8 deletions
Generated
+7
View File
@@ -45,6 +45,12 @@ dependencies = [
"generic-array", "generic-array",
] ]
[[package]]
name = "bytecount"
version = "0.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
[[package]] [[package]]
name = "bytes" name = "bytes"
version = "1.11.1" version = "1.11.1"
@@ -493,6 +499,7 @@ dependencies = [
name = "mist-codegen" name = "mist-codegen"
version = "0.3.3-alpha.0" version = "0.3.3-alpha.0"
dependencies = [ dependencies = [
"bytecount",
"mist-parser", "mist-parser",
] ]
+1
View File
@@ -9,4 +9,5 @@ keywords = ["compiler", "language", "mist"]
categories = ["compilers"] categories = ["compilers"]
[dependencies] [dependencies]
bytecount = "0.6.9"
mist-parser = { workspace = true } mist-parser = { workspace = true }
+8 -6
View File
@@ -50,13 +50,15 @@ impl RustCodegen {
} }
fn add(&mut self, s: &str) { fn add(&mut self, s: &str) {
for b in s.bytes() { let newline_count = bytecount::count(s.as_bytes(), b'\n');
if b == b'\n' {
self.position.0 += 1; if newline_count == 0 {
self.position.1 = 0; self.position.1 += s.len();
} else { } else {
self.position.1 += 1; self.position.0 += newline_count;
}
let last_newline = s.rfind('\n').unwrap();
self.position.1 = s.len() - last_newline - 1;
} }
self.output.push_str(s); self.output.push_str(s);