use crate::UtilesCoreError;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Serialize, Deserialize)]
pub enum Projection {
Geographic,
Mercator,
}
impl TryFrom<String> for Projection {
type Error = UtilesCoreError;
fn try_from(value: String) -> Result<Self, Self::Error> {
match value.to_lowercase().as_str() {
"geographic" => Ok(Projection::Geographic),
"mercator" => Ok(Projection::Mercator),
_ => Err(UtilesCoreError::InvalidProjection(value)),
}
}
}
impl fmt::Display for Projection {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Projection::Geographic => write!(f, "geographic"),
Projection::Mercator => write!(f, "mercator"),
}
}
}