From 9d559229529790da70d7342b5566294bbf162650 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Mon, 3 Mar 2025 13:11:19 +1100 Subject: [PATCH] Use impl_op_for_references for block height/interval We have a new macro for implementing ops with a bunch of reference combos. Lets use it for block `Height` and `Interval`. This patch is strictly additive. --- units/src/block.rs | 70 ++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/units/src/block.rs b/units/src/block.rs index af4d30b41..a402853fd 100644 --- a/units/src/block.rs +++ b/units/src/block.rs @@ -171,53 +171,55 @@ impl fmt::Display for TooBigForRelativeBlockHeightError { #[cfg(feature = "std")] impl std::error::Error for TooBigForRelativeBlockHeightError {} -// height - height = interval -impl ops::Sub for BlockHeight { - type Output = BlockInterval; +crate::internal_macros::impl_op_for_references! { + // height - height = interval + impl ops::Sub for BlockHeight { + type Output = BlockInterval; - fn sub(self, rhs: BlockHeight) -> Self::Output { - let interval = self.to_u32() - rhs.to_u32(); - BlockInterval::from_u32(interval) + fn sub(self, rhs: BlockHeight) -> Self::Output { + let interval = self.to_u32() - rhs.to_u32(); + BlockInterval::from_u32(interval) + } } -} -// height + interval = height -impl ops::Add for BlockHeight { - type Output = BlockHeight; + // height + interval = height + impl ops::Add for BlockHeight { + type Output = BlockHeight; - fn add(self, rhs: BlockInterval) -> Self::Output { - let height = self.to_u32() + rhs.to_u32(); - BlockHeight::from_u32(height) + fn add(self, rhs: BlockInterval) -> Self::Output { + let height = self.to_u32() + rhs.to_u32(); + BlockHeight::from_u32(height) + } } -} -// height - interval = height -impl ops::Sub for BlockHeight { - type Output = BlockHeight; + // height - interval = height + impl ops::Sub for BlockHeight { + type Output = BlockHeight; - fn sub(self, rhs: BlockInterval) -> Self::Output { - let height = self.to_u32() - rhs.to_u32(); - BlockHeight::from_u32(height) + fn sub(self, rhs: BlockInterval) -> Self::Output { + let height = self.to_u32() - rhs.to_u32(); + BlockHeight::from_u32(height) + } } -} -// interval + interval = interval -impl ops::Add for BlockInterval { - type Output = BlockInterval; + // interval + interval = interval + impl ops::Add for BlockInterval { + type Output = BlockInterval; - fn add(self, rhs: BlockInterval) -> Self::Output { - let height = self.to_u32() + rhs.to_u32(); - BlockInterval::from_u32(height) + fn add(self, rhs: BlockInterval) -> Self::Output { + let height = self.to_u32() + rhs.to_u32(); + BlockInterval::from_u32(height) + } } -} -// interval - interval = interval -impl ops::Sub for BlockInterval { - type Output = BlockInterval; + // interval - interval = interval + impl ops::Sub for BlockInterval { + type Output = BlockInterval; - fn sub(self, rhs: BlockInterval) -> Self::Output { - let height = self.to_u32() - rhs.to_u32(); - BlockInterval::from_u32(height) + fn sub(self, rhs: BlockInterval) -> Self::Output { + let height = self.to_u32() - rhs.to_u32(); + BlockInterval::from_u32(height) + } } }