+use integer_encoding::VarIntWriter;
use std::mem::size_of;
pub struct 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 {
.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;