htqx_minigrep/
lib.rs

1use std::error::Error;
2
3
4pub fn run(config:Config){
5    println!("lib run.");
6    
7    // let contents = fs::read_to_string(config.filename)?;
8    
9    // println!("With text:\n{}", contents);
10}
11
12pub struct Config<'a>{
13    query:&'a str,
14    filename:&'a str,
15}
16
17// struct Config(String,String);
18
19// struct Config;
20
21fn parse_config<'a>(args: &'a [String])->Config<'a>{
22    let query = &args[1];//.expect("需要搜索字符串参数。")
23    let filename = &args[2];//.expect("需要文件名参数。")
24
25    println!("Searching for {}", query);
26    println!("In File {}", filename);
27    
28    Config{query, filename}
29}
30
31impl<'a> Config<'a>{
32    pub fn new (args:&[String])->Result<Config, &'static str>{
33        if args.len() < 3{
34            return Err("需要搜索字符串和文件名参数。")
35        }
36        Ok(parse_config(args))
37    }
38}
39
40fn search<'a>(query:&str,contents:&'a str)
41    ->Vec<&'a str>{
42    vec![]
43}
44
45#[cfg(test)]
46mod tests{
47    use super::*;
48
49    #[test]
50    fn one(){
51        let query="duct";
52        let contents = "\
53        rust:
54        safe, fase, productive.
55        pick three.";
56
57        assert!(vec!["safe,fase,productive."] 
58            == search(query,contents));
59
60    }
61}