ethportal-api 0.8.1

Definitions for various Ethereum Portal Network JSONRPC APIs
Documentation
use serde::{Deserializer, Serializer};
use serde_utils::hex::PrefixedHexVisitor;
use ssz_types::{typenum::Unsigned, FixedVector};

use crate::utils::bytes::hex_encode;

pub fn serialize<S, U>(bytes: &FixedVector<u8, U>, serializer: S) -> Result<S::Ok, S::Error>
where
    S: Serializer,
    U: Unsigned,
{
    serializer.serialize_str(&hex_encode(&bytes[..]))
}

pub fn deserialize<'de, D, U>(deserializer: D) -> Result<FixedVector<u8, U>, D::Error>
where
    D: Deserializer<'de>,
    U: Unsigned,
{
    let vec = deserializer.deserialize_string(PrefixedHexVisitor)?;
    FixedVector::new(vec)
        .map_err(|e| serde::de::Error::custom(format!("invalid fixed vector: {e:?}")))
}