1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use indicatif::ProgressBar; #[allow(unused_imports)] use std::io::{BufRead, BufReader}; #[allow(unused_imports)] use stringreader::StringReader; pub fn find_matches(reader: impl BufRead, pattern: &str, pb: &ProgressBar) -> Vec<String> { let mut output = Vec::new(); for line in reader.lines() { let line = line.expect(""); pb.inc(1); if line.contains(pattern) { output.push(line); } } output } #[test] fn find_a_match() { let reader = BufReader::new(StringReader::new("terry\nperry\nberry\nyes")); let pb = ProgressBar::new(100); let result = find_matches(reader, "erry", &pb).join("\n"); assert_eq!(result, "terry\nperry\nberry"); }