messagehash directly derive from Deserialize

This commit is contained in:
Ivan Folgueira Bande 2025-01-09 22:57:59 +01:00
parent 566fae9dac
commit 6541dc34b8
No known key found for this signature in database
GPG Key ID: 3C117481F89E24A7

View File

@ -1,6 +1,6 @@
use crate::general::waku_decode::WakuDecode;
use hex::FromHex;
use serde::{Deserialize, Deserializer, Serialize};
use serde::{Deserialize, Serialize};
use std::convert::TryInto;
use std::fmt;
use std::fmt::Write;
@ -8,7 +8,7 @@ use std::hash::Hash;
use std::str::FromStr;
/// Waku message hash, hex encoded sha256 digest of the message
#[derive(Debug, Serialize, PartialEq, Eq, Clone, Hash)]
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone, Hash)]
pub struct MessageHash([u8; 32]);
impl MessageHash {
@ -38,23 +38,6 @@ impl FromStr for MessageHash {
}
}
impl<'de> Deserialize<'de> for MessageHash {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
// Deserialize the input as a vector of u8
let vec: Vec<u8> = Deserialize::deserialize(deserializer)?;
// Ensure the vector has exactly 32 elements
let array: [u8; 32] = vec
.try_into()
.map_err(|_| serde::de::Error::custom("Expected an array of length 32"))?;
Ok(MessageHash(array))
}
}
impl WakuDecode for MessageHash {
fn decode(input: &str) -> Result<Self, String> {
MessageHash::from_str(input)