ic/iris/
species.rs

1//! Defines recognized iris classifications (species).
2
3use serde::{Deserialize, Deserializer};
4use strum_macros as sm;
5
6#[derive(
7    Clone,
8    Copy,
9    num_enum::TryFromPrimitive,
10    sm::AsRefStr,
11    sm::IntoStaticStr,
12    Debug,
13    sm::Display,
14    PartialEq,
15    Eq,
16    Hash,
17    num_enum::IntoPrimitive,
18)]
19#[repr(u8)]
20pub enum IrisSpecies {
21    Setosa = 0,
22    Versicolor = 1,
23    Virginica = 2,
24}
25impl<'de> Deserialize<'de> for IrisSpecies {
26    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
27    where
28        D: Deserializer<'de>,
29    {
30        let iris_code = u8::deserialize(deserializer)?;
31        num_enum::TryFromPrimitive::try_from_primitive(iris_code).map_err(serde::de::Error::custom)
32    }
33}