From a1a0710ee6435ab823f966a3eacaa39dcf5b3e46 Mon Sep 17 00:00:00 2001 From: "Joseph T. Lyons" Date: Sun, 5 Jul 2020 22:25:39 -0400 Subject: [PATCH] Return iter from `every` command (#2118) * Return iter from `every` command * Clippy * Better variable name --- crates/nu-cli/src/commands/every.rs | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/crates/nu-cli/src/commands/every.rs b/crates/nu-cli/src/commands/every.rs index 2019ce3a5a..c17f6c6403 100644 --- a/crates/nu-cli/src/commands/every.rs +++ b/crates/nu-cli/src/commands/every.rs @@ -73,23 +73,18 @@ async fn every(args: CommandArgs, registry: &CommandRegistry) -> Result = input.into_vec().await; - let stride_desired = if stride.item < 1 { 1 } else { stride.item } as usize; - - let mut values_vec_deque = VecDeque::new(); - - for (i, x) in v.iter().enumerate() { - let should_include = if skip.item { - i % stride_desired != 0 - } else { - i % stride_desired == 0 - }; + let iter = v.into_iter().enumerate().filter_map(move |(i, value)| { + let stride_desired = if stride.item < 1 { 1 } else { stride.item } as usize; + let should_include = skip.item == (i % stride_desired != 0); if should_include { - values_vec_deque.push_back(ReturnSuccess::value(x.clone())); + return Some(ReturnSuccess::value(value)); } - } - Ok(futures::stream::iter(values_vec_deque).to_output_stream()) + None + }); + + Ok(futures::stream::iter(iter).to_output_stream()) } #[cfg(test)]