use std::fmt;
#[derive(Debug)]
pub enum BucketError {
InvalidBucketSize(u64),
InvalidRange { start: u64, end: u64 },
SerializationError(String),
IterationError(String),
}
impl fmt::Display for BucketError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
BucketError::InvalidBucketSize(size) => {
write!(f, "Invalid bucket size {}: must be greater than 0", size)
}
BucketError::InvalidRange { start, end } => {
write!(
f,
"Invalid bucket range: start {} must be <= end {}",
start, end
)
}
BucketError::SerializationError(msg) => {
write!(f, "Serialization error: {}", msg)
}
BucketError::IterationError(msg) => {
write!(f, "Bucket iteration error: {}", msg)
}
}
}
}
impl std::error::Error for BucketError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
None
}
}
pub mod iterator;
pub mod key;
pub use iterator::{
BucketIterExt, BucketMultimapIterExt, BucketRangeIterator, BucketRangeMultimapIterator,
};
pub use key::{BucketedKey, KeyBuilder};