diff --git a/dcb/src/util/signed_hex.rs b/dcb/src/util/signed_hex.rs index 22929c4..9b7631a 100644 --- a/dcb/src/util/signed_hex.rs +++ b/dcb/src/util/signed_hex.rs @@ -3,15 +3,22 @@ // Imports use int_conv::Extended; +use ref_cast::RefCast; use std::fmt::{self, Formatter, LowerHex}; /// A signed numeric type that uses signed hexadecimal formatting. +#[derive(ref_cast::RefCast)] +#[repr(transparent)] pub struct SignedHex(pub T); // All references implement it for their underlying type. -impl<'a, T: LowerHex> LowerHex for SignedHex<&'a T> { +#[allow(clippy::use_self)] // We're using a generic version `SignedHex`, not `Self` +impl<'a, T> LowerHex for SignedHex<&'a T> +where + SignedHex: LowerHex, +{ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - ::fmt(self.0, f) + as LowerHex>::fmt(SignedHex::::ref_cast(self.0), f) } }