openrtb_native1/
version.rs1#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Clone, Copy)]
6pub enum Version {
7 #[serde(rename = "1.0")]
8 V1_0,
9 #[serde(rename = "1.1")]
10 V1_1,
11 #[serde(rename = "1.2")]
12 V1_2,
13}
14
15impl Default for Version {
16 fn default() -> Self {
17 Self::V1_2
18 }
19}
20
21impl std::str::FromStr for Version {
22 type Err = serde_json::Error;
23
24 fn from_str(s: &str) -> Result<Self, Self::Err> {
25 serde_json::from_str(s)
26 }
27}
28
29#[cfg(test)]
30mod test {
31 use super::*;
32
33 #[test]
34 fn json() -> serde_json::Result<()> {
35 assert!(serde_json::from_str::<Version>("0.9").is_err());
36
37 let json = r#"["1.0","1.1","1.2"]"#;
38 let e1: Vec<Version> = serde_json::from_str(json)?;
39 assert_eq!(e1, vec![Version::V1_0, Version::V1_1, Version::V1_2]);
40 assert_eq!(serde_json::to_string(&e1)?, json);
41
42 Ok(())
43 }
44}