novakv 1.0.1

An embedded, ordered key-value store for Rust.
Documentation
use crate::status::Result;

#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct WriteBatch {
    pub header: crate::write_batch::WriteBatchHeader,
    pub records: Vec<crate::write_batch::WriteBatchRecord>,
}

impl WriteBatch {
    pub fn encode(&self, dst: &mut Vec<u8>) {
        self.header.encode(dst);
        for item in &self.records {
            item.encode(dst);
        }
    }

    pub fn decode_from(input: &mut &[u8]) -> Result<Self> {
        let header = crate::write_batch::WriteBatchHeader::decode_from(input)?;
        let records = {
            let n = (header.count) as usize;
            let mut items = Vec::with_capacity(n);
            for _ in 0..n {
                items.push(crate::write_batch::WriteBatchRecord::decode_from(input)?);
            }
            items
        };
        Ok(Self { header, records })
    }
}