use std::str::FromStr;
use super::{error::ExaConfigError, COMPRESSION};
#[derive(Debug, Clone, Copy, Default, PartialEq)]
pub enum ExaCompressionMode {
Disabled,
#[default]
Preferred,
Required,
}
impl ExaCompressionMode {
const DISABLED: &str = "disabled";
const PREFERRED: &str = "preferred";
const REQUIRED: &str = "required";
}
impl FromStr for ExaCompressionMode {
type Err = ExaConfigError;
fn from_str(s: &str) -> Result<Self, ExaConfigError> {
Ok(match &*s.to_ascii_lowercase() {
Self::DISABLED => ExaCompressionMode::Disabled,
Self::PREFERRED => ExaCompressionMode::Preferred,
Self::REQUIRED => ExaCompressionMode::Required,
_ => Err(ExaConfigError::InvalidParameter(COMPRESSION))?,
})
}
}
impl AsRef<str> for ExaCompressionMode {
fn as_ref(&self) -> &str {
match self {
ExaCompressionMode::Disabled => Self::DISABLED,
ExaCompressionMode::Preferred => Self::PREFERRED,
ExaCompressionMode::Required => Self::REQUIRED,
}
}
}