diff --git a/crates/evm/fuzz/src/invariant/mod.rs b/crates/evm/fuzz/src/invariant/mod.rs index 82938f6cc37c..fdc0b9d56c31 100644 --- a/crates/evm/fuzz/src/invariant/mod.rs +++ b/crates/evm/fuzz/src/invariant/mod.rs @@ -1,5 +1,6 @@ use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes}; +use itertools::Either; use parking_lot::Mutex; use std::{collections::BTreeMap, sync::Arc}; @@ -116,22 +117,19 @@ impl FuzzRunIdentifiedContracts { /// Helper to retrieve functions to fuzz for specified abi. /// Returns specified targeted functions if any, else mutable abi functions. -pub(crate) fn abi_fuzzed_functions( - abi: &JsonAbi, - targeted_functions: &[Function], -) -> Vec { +pub(crate) fn abi_fuzzed_functions<'a>( + abi: &'a JsonAbi, + targeted_functions: &'a [Function], +) -> impl Iterator { if !targeted_functions.is_empty() { - targeted_functions.to_vec() + Either::Left(targeted_functions.iter()) } else { - abi.functions() - .filter(|&func| { - !matches!( - func.state_mutability, - alloy_json_abi::StateMutability::Pure | alloy_json_abi::StateMutability::View - ) - }) - .cloned() - .collect() + Either::Right(abi.functions().filter(|&func| { + !matches!( + func.state_mutability, + alloy_json_abi::StateMutability::Pure | alloy_json_abi::StateMutability::View + ) + })) } } diff --git a/crates/evm/fuzz/src/strategies/invariants.rs b/crates/evm/fuzz/src/strategies/invariants.rs index b3bb21372b10..55af574c5989 100644 --- a/crates/evm/fuzz/src/strategies/invariants.rs +++ b/crates/evm/fuzz/src/strategies/invariants.rs @@ -40,7 +40,7 @@ pub fn override_call_strat( let (_, contract_specs) = contracts.iter().nth(rand_index).unwrap(); contract_specs }); - let fuzzed_functions = abi_fuzzed_functions(abi, functions); + let fuzzed_functions: Vec<_> = abi_fuzzed_functions(abi, functions).cloned().collect(); any::().prop_map(move |index| index.get(&fuzzed_functions).clone()) };