]> git.mikk.net Git - mtbl-rs/commitdiff
block_builder: remove last bit of custom varint code
authorChris Mikkelson <cmikk@fsi.io>
Mon, 2 Sep 2024 05:40:52 +0000 (00:40 -0500)
committerChris Mikkelson <cmikk@fsi.io>
Mon, 2 Sep 2024 05:40:52 +0000 (00:40 -0500)
src/writer/block_builder.rs

index 70b9761f8ead8a754f15fd50879c5de3bfa1a9ea..8789fadf705cdb1c773e553a6db8716e877e103f 100644 (file)
@@ -1,3 +1,4 @@
+use integer_encoding::VarIntWriter;
 use std::mem::size_of;
 
 pub struct BlockBuilder {
@@ -22,19 +23,6 @@ impl Default for BlockBuilder {
     }
 }
 
-fn varint_append(v: &mut Vec<u8>, mut i: usize) {
-    loop {
-        let b: u8 = i as u8 & 0x7f;
-        i >>= 7;
-        if i > 0 {
-            v.push(b | 0x80);
-        } else {
-            v.push(b);
-            break;
-        }
-    }
-}
-
 impl BlockBuilder {
     pub(crate) fn add(&mut self, key: &[u8], val: &[u8]) {
         if self.count > 0 && self.count % self.restart_interval == 0 {
@@ -50,9 +38,9 @@ impl BlockBuilder {
             .count();
         let key_unshared = key.len() - key_shared;
         self.data.reserve(3 * 5 + key_unshared + val.len());
-        varint_append(&mut self.data, key_shared);
-        varint_append(&mut self.data, key_unshared);
-        varint_append(&mut self.data, val.len());
+        self.data.write_varint(key_shared).unwrap();
+        self.data.write_varint(key_unshared).unwrap();
+        self.data.write_varint(val.len()).unwrap();
         self.data.extend_from_slice(&key[key_shared..]);
         self.data.extend_from_slice(val);
         self.count += 1;