From 968f0a2ce68852c55da8ce4103ff9457ae3ad5b7 Mon Sep 17 00:00:00 2001 From: Alex Stokes Date: Fri, 3 Nov 2023 10:54:30 -0600 Subject: [PATCH 1/2] allow optional `0x` prefix on hex {en,de}coding --- ssz-rs/src/serde.rs | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/ssz-rs/src/serde.rs b/ssz-rs/src/serde.rs index 42bd939e..f0632687 100644 --- a/ssz-rs/src/serde.rs +++ b/ssz-rs/src/serde.rs @@ -3,34 +3,8 @@ use hex::FromHexError; const HEX_ENCODING_PREFIX: &str = "0x"; -#[derive(Debug)] -pub enum HexError { - Hex(FromHexError), - MissingPrefix, -} - -impl fmt::Display for HexError { - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - match self { - Self::Hex(e) => write!(f, "{e}"), - Self::MissingPrefix => { - write!(f, "missing prefix `{HEX_ENCODING_PREFIX}` when deserializing hex data") - } - } - } -} - -impl From for HexError { - fn from(e: FromHexError) -> Self { - Self::Hex(e) - } -} - -#[cfg(feature = "std")] -impl std::error::Error for HexError {} - -pub fn try_bytes_from_hex_str(s: &str) -> Result, HexError> { - let target = s.strip_prefix(HEX_ENCODING_PREFIX).ok_or(HexError::MissingPrefix)?; +pub fn try_bytes_from_hex_str(s: &str) -> Result, FromHexError> { + let target = s.strip_prefix(HEX_ENCODING_PREFIX).unwrap_or(s); let data = hex::decode(target)?; Ok(data) } From c0a21cbc8b4b83a3c7293247a208a1f46e916574 Mon Sep 17 00:00:00 2001 From: Alex Stokes Date: Fri, 3 Nov 2023 10:56:59 -0600 Subject: [PATCH 2/2] clippy fixes --- ssz-rs/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ssz-rs/src/lib.rs b/ssz-rs/src/lib.rs index e415b144..b43e7e6a 100644 --- a/ssz-rs/src/lib.rs +++ b/ssz-rs/src/lib.rs @@ -68,10 +68,10 @@ mod lib { array::TryFromSliceError, fmt::{Debug, Display, Formatter}, ops::{Deref, DerefMut, Index, IndexMut}, - slice::{IterMut, SliceIndex}, + slice::SliceIndex, str::FromStr, }, - iter::{Enumerate, ExactSizeIterator}, + iter::ExactSizeIterator, }; #[cfg(not(feature = "std"))]