From a72b8711858547019ef2584121e7f52eb8503e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Wed, 4 Jan 2023 21:16:38 +0100 Subject: [PATCH] fix(error): address deserialize errors include origin --- src/addressing.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/addressing.rs b/src/addressing.rs index 99f04af..146b19b 100644 --- a/src/addressing.rs +++ b/src/addressing.rs @@ -52,10 +52,12 @@ impl Address { )?)), b'A' => Ok(Self::Attribute(String::from_utf8(digest_content)?)), b'X' => Ok(Self::Url(String::from_utf8(digest_content)?)), - _ => Err(anyhow!("Unknown identity marker.")), + _ => Err(anyhow!("Error decoding address: Unknown identity marker.")), } } - _ => Err(anyhow!("Unknown hash function type.")), + _ => Err(anyhow!( + "Error decoding address: Unknown hash function type." + )), } } } @@ -82,8 +84,10 @@ impl<'de> Visitor<'de> for AddressVisitor { where E: de::Error, { - let bytes = b58_decode(str).map_err(de::Error::custom)?; - Address::decode(bytes.as_ref()).map_err(de::Error::custom) + let bytes = b58_decode(str) + .map_err(|e| de::Error::custom(format!("Error deserializing address: {}", e)))?; + Address::decode(bytes.as_ref()) + .map_err(|e| de::Error::custom(format!("Error deserializing address: {}", e))) } } @@ -100,7 +104,11 @@ impl FromStr for Address { type Err = anyhow::Error; fn from_str(s: &str) -> Result { - Address::decode(b58_decode(s)?.as_ref()) + Address::decode( + b58_decode(s) + .map_err(|e| anyhow!("Error deserializing address: {}", e))? + .as_ref(), + ) } }