1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
extern crate regex;
use regex::Regex;

// TODO: unify these with borrowing `to_lowercase()`

#[allow(unused_must_use)]
pub fn search(content: &str, pattern: &str, mut writer: impl std::io::Write) {
    let regex = Regex::new(&pattern).unwrap();
    for line in content.lines() {
        if regex.is_match(line) {
            writeln!(writer, "{}", line);
        }
    }
}

#[allow(unused_must_use)]
pub fn search_case_insensitive(content: &str, pattern: &str, mut writer: impl std::io::Write) {
    let regex = Regex::new(&pattern.to_lowercase()).unwrap();
    for line in content.lines() {
        if regex.is_match(line) {
            writeln!(writer, "{}", line);
        }
    }
}