Fix custom deserializer for NonCodeMeta

This commit is contained in:
Adam Chalmers
2023-10-11 13:29:59 -05:00
parent 3666f42e41
commit 0c9250d2c5

View File

@ -811,18 +811,16 @@ impl<'de> Deserialize<'de> for NonCodeMeta {
#[derive(Deserialize)] #[derive(Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
struct NonCodeMetaHelper { struct NonCodeMetaHelper {
non_code_nodes: HashMap<String, NonCodeNode>, non_code_nodes: HashMap<String, Vec<NonCodeNode>>,
start: Option<NonCodeNode>, start: Option<NonCodeNode>,
} }
let helper = NonCodeMetaHelper::deserialize(deserializer)?; let helper = NonCodeMetaHelper::deserialize(deserializer)?;
let mut non_code_nodes = HashMap::new(); let non_code_nodes = helper
for (key, value) in helper.non_code_nodes { .non_code_nodes
non_code_nodes .into_iter()
.entry(key.parse().map_err(serde::de::Error::custom)?) .map(|(key, value)| Ok((key.parse().map_err(serde::de::Error::custom)?, value)))
.or_insert(Vec::new()) .collect::<Result<HashMap<_, _>, _>>()?;
.push(value);
}
Ok(NonCodeMeta { Ok(NonCodeMeta {
non_code_nodes, non_code_nodes,
start: helper.start, start: helper.start,