diff --git a/protocol/src/types/primitive.rs b/protocol/src/types/primitive.rs index 26cfb7186..84886929e 100644 --- a/protocol/src/types/primitive.rs +++ b/protocol/src/types/primitive.rs @@ -152,7 +152,8 @@ impl<'de> Deserialize<'de> for Hex { where D: de::Deserializer<'de>, { - Ok(Hex(withpfx_lowercase::deserialize(deserializer)?)) + String::deserialize(deserializer) + .and_then(|s| Hex::from_str(&s).map_err(serde::de::Error::custom)) } } @@ -534,6 +535,20 @@ mod tests { ); } + #[test] + fn test_hex_serde_deserialize() { + #[derive(Deserialize)] + struct Params { + key: Hex, + } + let test_params: &str = r#" + key = "0x1234" + "#; + let params: Params = toml::from_str(test_params).unwrap(); + let expected = Hex::from_str("0x1234").unwrap(); + assert_eq!(params.key, expected); + } + #[test] fn test_default_values() { let bytes = Hex::empty();