perg/
lib.rs

1extern crate regex;
2use regex::Regex;
3
4#[allow(unused_must_use)]
5pub fn search(
6    is_case_insensitive: bool,
7    content: &str,
8    pattern: &str,
9    mut writer: impl std::io::Write,
10) {
11    let pattern = if is_case_insensitive {
12        pattern.to_lowercase()
13    } else {
14        pattern.to_string()
15    };
16
17    let regex = Regex::new(&pattern).unwrap();
18    for line in content.lines() {
19        if regex.is_match(line) {
20            writeln!(writer, "{}", line);
21        }
22    }
23}