From 46e794c1c5f1e45f0be1fee050d093f0b3e427c4 Mon Sep 17 00:00:00 2001 From: Filipe Rodrigues Date: Sat, 24 Oct 2020 20:18:38 +0100 Subject: [PATCH] Fixed wrong formatting of references for `SignedHex`. --- dcb/src/util/signed_hex.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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) } }