1use std::error::Error;
2
3
4pub fn run(config:Config){
5 println!("lib run.");
6
7 }
11
12pub struct Config<'a>{
13 query:&'a str,
14 filename:&'a str,
15}
16
17fn parse_config<'a>(args: &'a [String])->Config<'a>{
22 let query = &args[1];let filename = &args[2];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}