xcell_types/boolean/
der.rs1use super::*;
2
3use crate::default_deserialize;
4
5default_deserialize![BooleanDescription];
6impl Default for BooleanDescription {
7 fn default() -> Self {
8 Self {
9 accept: BTreeSet::from_iter(vec!["true".to_string()]),
10 reject: BTreeSet::from_iter(vec!["false".to_string()]),
11 default: false,
12 }
13 }
14}
15
16impl<'de> Visitor<'de> for BooleanDescription {
17 type Value = Self;
18
19 fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
20 formatter.write_str(type_name::<Self>())
21 }
22 fn visit_map<A>(mut self, mut map: A) -> Result<Self::Value, A::Error>
23 where
24 A: MapAccess<'de>,
25 {
26 while let Some(key) = map.next_key::<&str>()? {
27 match key {
28 "default" => read_map_next_value(&mut map, |e| self.default = e),
29 "accept" | "true" => {
30 read_map_next_value(&mut map, |e: OneOrMany<String>| self.accept = BTreeSet::from_iter(e.unwrap()))
31 }
32 "reject" | "false" => {
33 read_map_next_value(&mut map, |e: OneOrMany<String>| self.reject = BTreeSet::from_iter(e.unwrap()))
34 }
35 _ => read_map_next_extra(&mut map, type_name::<Self>(), key),
36 }
37 }
38 Ok(self)
39 }
40}