libkv 0.1.0

A library for building data structures atop key-value stores.
Documentation
use crate::serialization::Encoding;

#[derive(thiserror::Error, Debug, PartialEq, Eq)]
pub enum KeySerializeError {}

#[derive(thiserror::Error, Debug, PartialEq, Eq)]
pub enum KeyDeserializeError {
    #[error("Not enough bytes to decode key: expected {0}, got {1}")]
    NotEnoughBytes(usize, usize),
    #[error("Invalid key length: expected {0}, got {1}")]
    InvalidLength(usize, usize),
    #[error("Error decoding UTF8 key: {0}")]
    Utf8Error(#[from] std::string::FromUtf8Error),
}

#[derive(thiserror::Error, Debug, PartialEq, Eq)]
pub enum StorageError<Enc: Encoding> {
    #[error("Error serializing key: {0}")]
    KeySerialize(#[from] KeySerializeError),
    #[error("Error deserializing key: {0}")]
    KeyDeserialize(#[from] KeyDeserializeError),
    #[error("Error serializing value: {0}")]
    ValueSerialize(Enc::EncodeError),
    #[error("Error deserializing value: {0}")]
    ValueDeserialize(Enc::DecodeError),
}