ecitygml-core 0.0.1-alpha.13

Core primitives and operations for processing CityGML data.
Documentation
use crate::Error;
use crate::Error::InvalidLodName;
use strum_macros::{Display, EnumIter};

#[derive(Debug, Copy, Hash, Eq, Clone, PartialEq, EnumIter, Ord, PartialOrd, Display)]
pub enum LevelOfDetail {
    Zero,
    One,
    Two,
    Three,
}

impl LevelOfDetail {
    pub fn as_index(self) -> usize {
        self as usize
    }
}

impl TryFrom<u8> for LevelOfDetail {
    type Error = Error;

    fn try_from(item: u8) -> Result<Self, Self::Error> {
        match item {
            0 => Ok(LevelOfDetail::Zero),
            1 => Ok(LevelOfDetail::One),
            2 => Ok(LevelOfDetail::Two),
            3 => Ok(LevelOfDetail::Three),
            _ => Err(InvalidLodName(item.to_string())),
        }
    }
}