From 5389142766cb7de181cd879fafeb9eb69cad8e5f Mon Sep 17 00:00:00 2001 From: David Thomas Date: Sat, 27 Jan 2024 16:47:58 +0000 Subject: [PATCH] Simplify Clone impl --- src/compact_bytestrings.rs | 17 +++++++---------- src/metadata.rs | 1 + 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/compact_bytestrings.rs b/src/compact_bytestrings.rs index 10549b5..cc790c5 100644 --- a/src/compact_bytestrings.rs +++ b/src/compact_bytestrings.rs @@ -481,18 +481,15 @@ impl CompactBytestrings { impl Clone for CompactBytestrings { fn clone(&self) -> Self { - let mut data = Vec::with_capacity(self.meta.iter().map(|m| m.len).sum()); - let mut meta = Vec::with_capacity(self.meta.len()); - - for bytes in self.iter() { - meta.push(Metadata { - start: data.len(), - len: bytes.len(), - }); - data.extend_from_slice(bytes); + Self { + data: self.data.clone(), + meta: self.meta.clone(), } + } - Self { data, meta } + fn clone_from(&mut self, source: &Self) { + self.data.clone_from(&source.data); + self.meta.clone_from(&source.meta) } } diff --git a/src/metadata.rs b/src/metadata.rs index 9644753..3871a43 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -1,3 +1,4 @@ +#[derive(Clone, Copy)] pub(crate) struct Metadata { pub(crate) start: usize, pub(crate) len: usize,