max_grrs/
lib.rs

1
2use std::io::{BufReader, BufRead};
3extern crate tempfile;
4#[cfg(test)]
5use tempfile::NamedTempFile;
6use std::fs::File;
7#[cfg(test)]
8use std::io::{Write};
9extern crate anyhow;
10use anyhow::{Context, Result};
11
12
13pub fn find_matches(reader: BufReader<File>, pattern: &str) -> Result<(), Box<dyn std::error::Error>>{
14    for line in reader.lines() {
15        let content = line.with_context(|| format!("Could not read file"))?;
16        if content.contains(&pattern) {
17            println!("{}", content);
18        }
19    }
20    Ok(())
21}
22
23
24#[test]
25fn test_find_matches() {
26    let input = "Hello, World!\nThis is a test\nAnother line";
27    let pattern = "test";
28
29    let mut temp_file = NamedTempFile::new().unwrap();
30    temp_file.write_all(input.as_bytes()).unwrap();
31
32    let file = temp_file.into_file();
33    let reader = BufReader::new(file);
34
35    find_matches(reader, pattern).unwrap();
36}