diff --git a/ethers-solc/src/artifacts.rs b/ethers-solc/src/artifacts.rs index 3df38461..5c48602f 100644 --- a/ethers-solc/src/artifacts.rs +++ b/ethers-solc/src/artifacts.rs @@ -1697,7 +1697,7 @@ pub struct Ewasm { #[derive(Clone, Debug, Default, Serialize, Deserialize, Eq, PartialEq)] pub struct StorageLayout { pub storage: Vec, - #[serde(default)] + #[serde(default, deserialize_with = "default_for_null")] pub types: BTreeMap, } @@ -1990,6 +1990,14 @@ where } } +fn default_for_null<'de, D, T>(deserializer: D) -> Result +where + D: Deserializer<'de>, + T: Deserialize<'de> + Default, +{ + Ok(Option::::deserialize(deserializer)?.unwrap_or_default()) +} + #[cfg(test)] mod tests { use super::*;