use super::blocks::{BLOCK_CAPACITY, LINE_SIZE};
const SMALL_MIN: usize = 1;
const SMALL_MAX: usize = LINE_SIZE;
const MEDIUM_MIN: usize = SMALL_MAX + 1;
const MEDIUM_MAX: usize = BLOCK_CAPACITY;
const LARGE_MIN: usize = MEDIUM_MAX + 1;
const LARGE_MAX: usize = std::usize::MAX;
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum SizeClass {
Small,
Medium,
Large,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum SizeClassError {
TooBig,
}
impl SizeClass {
pub fn from(size: usize) -> Result<SizeClass, SizeClassError> {
match size {
SMALL_MIN..=SMALL_MAX => Ok(SizeClass::Small),
MEDIUM_MIN..=MEDIUM_MAX => Ok(SizeClass::Medium),
LARGE_MIN..=LARGE_MAX => Ok(SizeClass::Large),
__TooBig => Err(SizeClassError::TooBig),
}
}
}