glorious/
lib.rs

1///! Searches content for query
2///
3use std::{env, error::Error};
4
5pub struct Config {
6    query: String,
7    content: String,
8}
9///Config builder, taking command line arguments and generating a Config struct instace.
10pub fn config_build(mut args: env::Args) -> Result<Config, Box<dyn Error>> {
11    args.next();
12
13    let query = args.next().ok_or_else(|| "no query".to_string())?;
14    let content = args.next().ok_or_else(|| "No content".to_string())?;
15
16    Ok(Config { query, content })
17}
18
19pub fn search<'a>(config: &'a Config) -> Vec<&'a str> {
20    config
21        .content
22        .lines()
23        .filter(|line| line.contains(&config.query))
24        .collect()
25}