1use 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}