From 11ebd7df8f053af5414c044b9c951f137ce30d0d Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 14:02:18 +0000 Subject: [PATCH 1/2] Box FloatError::DecimalFloat to shrink the error enum DecimalFloatErrors is 104 bytes, making FloatError 112 bytes and tripping clippy::result_large_err in downstream consumers (e.g. raindex) whose aggregate error enums embed FloatError. Boxing the variant drops FloatError to ~64 bytes; consumers' match/Display are unaffected. Co-Authored-By: Claude Opus 4.7 --- crates/float/src/error.rs | 2 +- crates/float/src/evm.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/float/src/error.rs b/crates/float/src/error.rs index 156802a..c290a2c 100644 --- a/crates/float/src/error.rs +++ b/crates/float/src/error.rs @@ -21,7 +21,7 @@ pub enum FloatError { #[error(transparent)] AlloySolTypes(#[from] alloy::sol_types::Error), #[error("Decimal Float error: {0:?}")] - DecimalFloat(DecimalFloat::DecimalFloatErrors), + DecimalFloat(Box), #[error("Decimal Float error selector: {0:?}")] DecimalFloatSelector(Result>), #[error(transparent)] diff --git a/crates/float/src/evm.rs b/crates/float/src/evm.rs index b26d751..6c7179f 100644 --- a/crates/float/src/evm.rs +++ b/crates/float/src/evm.rs @@ -86,7 +86,7 @@ where } ExecutionResult::Revert { output, .. } => { if let Ok(error) = DecimalFloat::DecimalFloatErrors::abi_decode(output.as_ref()) { - return Err(FloatError::DecimalFloat(error)); + return Err(FloatError::DecimalFloat(Box::new(error))); } Err(FloatError::Revert(output)) From cb22e26d5d8c66d79a44377a2c8b1daf586586c8 Mon Sep 17 00:00:00 2001 From: David Meister Date: Fri, 29 May 2026 14:41:31 +0000 Subject: [PATCH 2/2] Deref boxed DecimalFloat in test match patterns Boxing FloatError::DecimalFloat means the inner DecimalFloatErrors is behind a Box; update the assert!(matches!(...)) sites to match the variant and deref in a guard. Co-Authored-By: Claude Opus 4.7 --- crates/float/src/lib.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/float/src/lib.rs b/crates/float/src/lib.rs index 5d71955..994b8fd 100644 --- a/crates/float/src/lib.rs +++ b/crates/float/src/lib.rs @@ -1379,7 +1379,7 @@ mod tests { let err = Float::parse("1e3000000000".to_string()).unwrap_err(); assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::ExponentOverflow(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::ExponentOverflow(_)) )); } @@ -1477,7 +1477,7 @@ mod tests { assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::ExponentOverflow(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::ExponentOverflow(_)) )); } @@ -1495,7 +1495,7 @@ mod tests { assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::ExponentOverflow(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::ExponentOverflow(_)) )); } @@ -1750,7 +1750,7 @@ mod tests { assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::DivisionByZero(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::DivisionByZero(_)) )); } @@ -1763,7 +1763,7 @@ mod tests { let err = (near_max_exp * one_e_two).unwrap_err(); assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::ExponentOverflow(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::ExponentOverflow(_)) )); } @@ -1776,7 +1776,7 @@ mod tests { let err = (near_max_exp / one_e_neg_hundred).unwrap_err(); assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::ExponentOverflow(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::ExponentOverflow(_)) )); } @@ -1791,7 +1791,7 @@ mod tests { let err = (near_min_exp * one_e_neg_three).unwrap_err(); assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::ExponentUnderflow(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::ExponentUnderflow(_)) )); } @@ -1820,7 +1820,7 @@ mod tests { let err = Float::from_fixed_decimal(U256::MAX, 1).unwrap_err(); assert!(matches!( err, - FloatError::DecimalFloat(DecimalFloatErrors::LossyConversionToFloat(_)) + FloatError::DecimalFloat(e) if matches!(*e, DecimalFloatErrors::LossyConversionToFloat(_)) )); }