wick-config 0.28.0

Wick manifest configuration format.
Documentation
use std::collections::HashMap;

use serde::Deserializer;

#[allow(unused)]
pub(crate) fn kv_deserializer<'de, D>(deserializer: D) -> Result<HashMap<String, String>, D::Error>
where
  D: Deserializer<'de>,
{
  struct HashMapVisitor;

  impl<'de> serde::de::Visitor<'de> for HashMapVisitor {
    type Value = HashMap<String, String>;

    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
      formatter.write_str("a key/value map")
    }

    fn visit_map<A>(self, mut access: A) -> Result<Self::Value, A::Error>
    where
      A: serde::de::MapAccess<'de>,
    {
      let mut map = HashMap::with_capacity(access.size_hint().unwrap_or(0));
      while let Some((key, value)) = access.next_entry()? {
        map.insert(key, value);
      }
      Ok(map)
    }
  }

  deserializer.deserialize_any(HashMapVisitor)
}