Bläddra i källkod

Shift log vector and avoid allocation.

Jing Yang 5 år sedan
förälder
incheckning
4d80a496f2
1 ändrade filer med 2 tillägg och 1 borttagningar
  1. 2 1
      src/log_array.rs

+ 2 - 1
src/log_array.rs

@@ -122,7 +122,8 @@ impl LogArray {
     pub fn shift(&mut self, index: Index, snapshot: bytes::Bytes) {
         // Discard everything before index and store the snapshot.
         let offset = self.check_middle_index(index);
-        self.inner = self.inner.split_off(offset);
+        // WARNING: Potentially all entries after offset would be copied.
+        self.inner.drain(0..offset);
         self.snapshot = snapshot;
 
         // Override the first entry, we know there is at least one entry. This is not strictly