From d8cc55d5cd3135b68ca38e11a0aa21f28ede98da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C5=A1a=20Tomi=C4=87?= Date: Fri, 13 Mar 2026 09:38:36 +0100 Subject: [PATCH] perf: avoid copying concatenated type tables Write serialized type-table entries directly into the output buffer instead of materializing an intermediate concatenated Vec. --- rust/candid/src/ser.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/candid/src/ser.rs b/rust/candid/src/ser.rs index 2ed78e7a9..8505ee514 100644 --- a/rust/candid/src/ser.rs +++ b/rust/candid/src/ser.rs @@ -427,7 +427,9 @@ impl TypeSerialize { #[doc(hidden)] pub fn serialize(&mut self) -> Result<()> { leb128_encode(&mut self.result, self.type_table.len() as u64)?; - self.result.append(&mut self.type_table.concat()); + for entry in &self.type_table { + self.result.extend_from_slice(entry); + } leb128_encode(&mut self.result, self.args.len() as u64)?; let mut ty_encode = Vec::new();