diff --git a/src/lib/shell/assignments.rs b/src/lib/shell/assignments.rs index 57e1e34c00e5cd75e5c7f8eecdedf82b08881678..cf4de5275025c994675db13294072794a8f51aa2 100644 --- a/src/lib/shell/assignments.rs +++ b/src/lib/shell/assignments.rs @@ -218,11 +218,10 @@ impl VariableStore for Shell { Ok(VariableType::Array(values)) => { match self.variables.get_mut(key.name) { Some(VariableType::Array(ref mut array)) => { - let mut iterator: Box<Iterator<Item=&types::Str>> = Box::new(array.iter()); - for value in &values { - iterator = Box::new(iterator.filter(move |item| *item != value)); - } - *array = iterator.cloned().collect(); + *array = array.iter() + .filter(|item| values.iter().all(|value| *item != value)) + .cloned() + .collect(); } None => { eprintln!("ion: assignment error: {}: cannot head concatenate non-array variable", key.name);