return iterator instead of vector

This commit is contained in:
collin 2020-12-07 11:22:45 -05:00
parent 7745710dc4
commit 3b23eb595a
2 changed files with 4 additions and 7 deletions

View File

@ -77,13 +77,10 @@ impl Function {
}
///
/// Returns a vector of [&FunctionInput] removing `self` and `mut self` inputs.
/// Returns an iterator of [&FunctionInput] removing `self` and `mut self` inputs.
///
pub fn filter_self_inputs(&self) -> Vec<&FunctionInput> {
self.input
.iter()
.filter(|input| !input.is_self())
.collect::<Vec<&FunctionInput>>()
pub fn filter_self_inputs(&self) -> impl Iterator<Item = &FunctionInput> {
self.input.iter().filter(|input| !input.is_self())
}
fn format(&self, f: &mut fmt::Formatter) -> fmt::Result {

View File

@ -46,7 +46,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let mut_self = function.contains_mut_self();
// Store input values as new variables in resolved program
for (input_model, input_expression) in function.filter_self_inputs().iter().zip(input.into_iter()) {
for (input_model, input_expression) in function.filter_self_inputs().zip(input.into_iter()) {
let (name, value) = match input_model {
FunctionInput::InputKeyword(keyword) => {
let value =