From e27d82d702ded8141c52e903ffef3d5efccee60c Mon Sep 17 00:00:00 2001 From: Riccardo Casatta Date: Mon, 24 Feb 2020 16:17:30 +0100 Subject: [PATCH] deserialize block header with custom serde deserializer --- src/types.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/types.rs b/src/types.rs index a8d9646..6064c34 100644 --- a/src/types.rs +++ b/src/types.rs @@ -107,6 +107,16 @@ where Ok(answer) } +fn from_hex_header<'de, D>(deserializer: D) -> Result +where + D: de::Deserializer<'de>, +{ + use bitcoin::consensus::deserialize; + + let vec: Vec = from_hex(deserializer)?; + deserialize(&vec).map_err(de::Error::custom) +} + /// Response to a [`script_get_history`](../client/struct.Client.html#method.script_get_history) request. #[derive(Debug, Deserialize)] pub struct GetHistoryRes { @@ -189,8 +199,8 @@ pub struct GetMerkleRes { pub struct HeaderNotification { /// New block height. pub height: usize, - #[serde(rename(serialize = "hex"))] /// Newly added header. + #[serde(rename = "hex", deserialize_with = "from_hex_header")] pub header: block::BlockHeader, }