minigrep_ironcore864 0.1.1

A commandline tool that greps a needle in the hay. Support case-sensitive search; default not.
Documentation
use std::env;

pub struct Config {
    pub query: String,
    pub filename: String,
    pub case_sensitive: bool,
}

impl Config {
    pub fn new(mut args: env::Args) -> Result<Config, &'static str> {
        args.next();

        let query = match args.next() {
            Some(arg) => arg,
            None => return Err("Didn't get a query string"),
        };

        let filename = match args.next() {
            Some(arg) => arg,
            None => return Err("Didn't get a file name"),
        };

        let case_sensitive;

        let c = |val: String| match val.to_lowercase().as_str() {
            "true" => true,
            "1" => true,
            _ => false,
        };

        match env::var("CASE_SENSITIVE") {
            Ok(val) => case_sensitive = c(val),
            Err(_) => case_sensitive = false,
        }

        Ok(Config {
            query,
            filename,
            case_sensitive,
        })
    }
}