Use fmt_hex_exact

Currently we have two functions for displaying forwards and backwards and
we also have `fmt_hex_exact`. I do not know why we added the functions.

In the latest version of hex we do not have the ability to construct a
`DisplayArray` type so we have to use `fmt_hex_exact`.

Make the change now, separate from the `hex` upgrade, to assist review.
This commit is contained in:
Tobin C. Harding 2024-02-28 09:47:21 +11:00
parent 6820f51408
commit f0558e8eb9
No known key found for this signature in database
GPG Key ID: 40BF9E4C269D6607
2 changed files with 8 additions and 24 deletions

View File

@ -71,22 +71,6 @@ pub(crate) use arr_newtype_fmt_impl;
macro_rules! hash_trait_impls { macro_rules! hash_trait_impls {
($bits:expr, $reverse:expr $(, $gen:ident: $gent:ident)*) => { ($bits:expr, $reverse:expr $(, $gen:ident: $gent:ident)*) => {
impl<$($gen: $gent),*> Hash<$($gen),*> { impl<$($gen: $gent),*> Hash<$($gen),*> {
/// Displays hex forwards, regardless of how this type would display it naturally.
///
/// This is mainly intended as an internal method and you shouldn't need it unless
/// you're doing something special.
pub fn forward_hex(&self) -> impl '_ + core::fmt::LowerHex + core::fmt::UpperHex {
$crate::hex::DisplayHex::as_hex(&self.0)
}
/// Displays hex backwards, regardless of how this type would display it naturally.
///
/// This is mainly intended as an internal method and you shouldn't need it unless
/// you're doing something special.
pub fn backward_hex(&self) -> impl '_ + core::fmt::LowerHex + core::fmt::UpperHex {
$crate::hex::display::DisplayArray::<_, [u8; $bits / 8 * 2]>::new(self.0.iter().rev())
}
/// Zero cost conversion between a fixed length byte array shared reference and /// Zero cost conversion between a fixed length byte array shared reference and
/// a shared reference to this Hash type. /// a shared reference to this Hash type.
pub fn from_bytes_ref(bytes: &[u8; $bits / 8]) -> &Self { pub fn from_bytes_ref(bytes: &[u8; $bits / 8]) -> &Self {

View File

@ -3,17 +3,17 @@
#[macro_export] #[macro_export]
/// Adds hexadecimal formatting implementation of a trait `$imp` to a given type `$ty`. /// Adds hexadecimal formatting implementation of a trait `$imp` to a given type `$ty`.
macro_rules! hex_fmt_impl( macro_rules! hex_fmt_impl(
($reverse:expr, $ty:ident) => ( ($reverse:expr, $len:expr, $ty:ident) => (
$crate::hex_fmt_impl!($reverse, $ty, ); $crate::hex_fmt_impl!($reverse, $len, $ty, );
); );
($reverse:expr, $ty:ident, $($gen:ident: $gent:ident),*) => ( ($reverse:expr, $len:expr, $ty:ident, $($gen:ident: $gent:ident),*) => (
impl<$($gen: $gent),*> $crate::_export::_core::fmt::LowerHex for $ty<$($gen),*> { impl<$($gen: $gent),*> $crate::_export::_core::fmt::LowerHex for $ty<$($gen),*> {
#[inline] #[inline]
fn fmt(&self, f: &mut $crate::_export::_core::fmt::Formatter) -> $crate::_export::_core::fmt::Result { fn fmt(&self, f: &mut $crate::_export::_core::fmt::Formatter) -> $crate::_export::_core::fmt::Result {
if $reverse { if $reverse {
$crate::_export::_core::fmt::LowerHex::fmt(&self.0.backward_hex(), f) $crate::hex::fmt_hex_exact!(f, $len, <Self as $crate::Hash>::as_byte_array(&self).iter().rev(), $crate::hex::Case::Lower)
} else { } else {
$crate::_export::_core::fmt::LowerHex::fmt(&self.0.forward_hex(), f) $crate::hex::fmt_hex_exact!(f, $len, <Self as $crate::Hash>::as_byte_array(&self), $crate::hex::Case::Lower)
} }
} }
} }
@ -22,9 +22,9 @@ macro_rules! hex_fmt_impl(
#[inline] #[inline]
fn fmt(&self, f: &mut $crate::_export::_core::fmt::Formatter) -> $crate::_export::_core::fmt::Result { fn fmt(&self, f: &mut $crate::_export::_core::fmt::Formatter) -> $crate::_export::_core::fmt::Result {
if $reverse { if $reverse {
$crate::_export::_core::fmt::UpperHex::fmt(&self.0.backward_hex(), f) $crate::hex::fmt_hex_exact!(f, $len, <Self as $crate::Hash>::as_byte_array(&self).iter().rev(), $crate::hex::Case::Upper)
} else { } else {
$crate::_export::_core::fmt::UpperHex::fmt(&self.0.forward_hex(), f) $crate::hex::fmt_hex_exact!(f, $len, <Self as $crate::Hash>::as_byte_array(&self), $crate::hex::Case::Upper)
} }
} }
} }
@ -188,7 +188,7 @@ macro_rules! hash_newtype {
$({ $($type_attrs)* })* $({ $($type_attrs)* })*
} }
$crate::hex_fmt_impl!(<$newtype as $crate::Hash>::DISPLAY_BACKWARD, $newtype); $crate::hex_fmt_impl!(<$newtype as $crate::Hash>::DISPLAY_BACKWARD, <$newtype as $crate::Hash>::LEN, $newtype);
$crate::serde_impl!($newtype, <$newtype as $crate::Hash>::LEN); $crate::serde_impl!($newtype, <$newtype as $crate::Hash>::LEN);
$crate::borrow_slice_impl!($newtype); $crate::borrow_slice_impl!($newtype);