use crate::Exceptions;
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum Compaction {
AUTO = 0,
TEXT = 1,
BYTE = 2,
NUMERIC = 3,
}
impl TryFrom<&String> for Compaction {
type Error = Exceptions;
fn try_from(value: &String) -> Result<Self, Self::Error> {
if let Ok(num_val) = value.parse::<u8>() {
match num_val {
0 => return Ok(Compaction::AUTO),
1 => return Ok(Compaction::TEXT),
2 => return Ok(Compaction::BYTE),
3 => return Ok(Compaction::NUMERIC),
_ => {}
}
}
Err(Exceptions::format_with(format!(
"Compaction must be 0-3 (inclusivie). Found: {value}"
)))
}
}