grrs_gn/
lib.rs

1use anyhow::Result;
2use std::io::{BufRead, BufReader, Read, Write};
3
4pub fn find_matches<T>(reader: BufReader<T>, pattern: &str, mut writer: impl Write) -> Result<()>
5where
6    T: Read
7{
8    for line in reader.lines() {
9        let line = line?;
10        if line.contains(&pattern) {
11            writeln!(writer, "{}", line)?;
12        }
13    }
14    Ok(())
15}
16
17#[cfg(test)]
18mod test {
19
20    use super::*;
21
22    #[test]
23    fn find_a_match() {
24        let mut result = Vec::new();
25        find_matches(BufReader::new("lorem ipsum\ndolor sit amet".as_bytes()), "lorem", &mut result).unwrap();
26        assert_eq!(result, b"lorem ipsum\n");
27    }
28
29}