foundry_compilers_artifacts_solc/ast/
utils.rs1use super::ExternalInlineAssemblyReference;
2use serde::{Deserialize, Deserializer, Serialize};
3use std::collections::BTreeMap;
4
5pub fn deserialize_external_assembly_references<'de, D>(
6 deserializer: D,
7) -> Result<Vec<ExternalInlineAssemblyReference>, D::Error>
8where
9 D: Deserializer<'de>,
10{
11 #[derive(Serialize, Deserialize)]
12 #[serde(untagged)]
13 enum ExternalReferencesHelper {
14 Plain(Vec<ExternalInlineAssemblyReference>),
15 Map(Vec<BTreeMap<String, ExternalInlineAssemblyReference>>),
18 }
19
20 ExternalReferencesHelper::deserialize(deserializer).map(|v| match v {
21 ExternalReferencesHelper::Plain(vec) => vec,
22 ExternalReferencesHelper::Map(vec) => {
23 vec.into_iter().flat_map(|v| v.into_values()).collect()
24 }
25 })
26}