blockset 0.2.2

Data Block Set
Documentation
use std::{collections::HashMap, io};

use crate::{
    table::{Table, Type},
    u224::U224,
};

pub type MemTable = [HashMap<U224, Vec<u8>>; 2];

impl Table for &mut MemTable {
    fn has_block(&self, t: Type, key: &U224) -> bool {
        self[t as usize].contains_key(key)
    }

    fn get_block(&self, t: Type, key: &U224) -> io::Result<Vec<u8>> {
        self[t as usize]
            .get(key)
            .cloned()
            .ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "file not found"))
    }

    fn set_block(
        &mut self,
        t: Type,
        key: &U224,
        value: impl Iterator<Item = u8>,
    ) -> io::Result<()> {
        self[t as usize].insert(*key, value.collect());
        Ok(())
    }
}