diff --git a/src/source/file.rs b/src/source/file.rs index 0b47f35..e385412 100644 --- a/src/source/file.rs +++ b/src/source/file.rs @@ -32,12 +32,14 @@ impl Source for FileSource { let file = File::open(&self.path) .with_context(|| format!("Failed to open file: {:?}", self.path))?; let reader = BufReader::new(file); - Ok(Box::new( - reader - .lines() - .map_while(Result::ok) - .filter(|line| !line.is_empty()), - )) + let lines: Vec = reader + .lines() + .collect::>>() + .with_context(|| format!("I/O error reading file: {:?}", self.path))? + .into_iter() + .filter(|line| !line.is_empty()) + .collect(); + Ok(Box::new(lines.into_iter())) } fn content_hash(&self) -> Result> { diff --git a/src/source/seclists.rs b/src/source/seclists.rs index 85231e4..e0741f5 100644 --- a/src/source/seclists.rs +++ b/src/source/seclists.rs @@ -48,12 +48,14 @@ impl Source for SecListsSource { let file = File::open(&self.full_path) .with_context(|| format!("Failed to open: {:?}", self.full_path))?; let reader = BufReader::new(file); - Ok(Box::new( - reader - .lines() - .map_while(Result::ok) - .filter(|line| !line.is_empty()), - )) + let lines: Vec = reader + .lines() + .collect::>>() + .with_context(|| format!("I/O error reading: {:?}", self.full_path))? + .into_iter() + .filter(|line| !line.is_empty()) + .collect(); + Ok(Box::new(lines.into_iter())) } fn content_hash(&self) -> Result> { diff --git a/src/source/stdin.rs b/src/source/stdin.rs index 61eb5fa..85231ea 100644 --- a/src/source/stdin.rs +++ b/src/source/stdin.rs @@ -25,12 +25,13 @@ impl Source for StdinSource { fn words(&self) -> Result>> { let reader = BufReader::new(io::stdin()); - Ok(Box::new( - reader - .lines() - .map_while(Result::ok) - .filter(|line| !line.is_empty()), - )) + let lines: Vec = reader + .lines() + .collect::>>()? + .into_iter() + .filter(|line| !line.is_empty()) + .collect(); + Ok(Box::new(lines.into_iter())) } fn content_hash(&self) -> Result> {