xcell_types/vector/
der.rs1use super::*;
2use crate::{default_deserialize, utils::push_delimiter};
3
4impl Default for VectorDescription {
5 fn default() -> Self {
6 let mut delimiter = BTreeSet::default();
7 push_delimiter(&mut delimiter, ";,");
8 let mut suffix = BTreeSet::default();
9 suffix.insert("[]".to_string());
10 Self { delimiter, suffix, typing: Default::default(), default: vec![] }
11 }
12}
13
14default_deserialize![VectorDescription];
15
16impl<'de> Visitor<'de> for VectorDescription {
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 "delimiter" => read_map_next_value(&mut map, |e: String| self.add_delimiter(&e)),
29 "suffix" => {
30 read_map_next_value(&mut map, |e: OneOrMany<String>| e.into_iter().for_each(|s| self.add_suffix(s)))
31 }
32 _ => read_map_next_extra(&mut map, type_name::<Self>(), key),
33 }
34 }
35 Ok(self)
36 }
37}