use std::env;
use std::fs;
use std::process;
pub fn get_vec() {
let args:Vec<String> = env::args().collect();
println!("{:?}",args);
let config =Config::new(&args).unwrap_or_else(|err| {
println!("problem is {}",err);
process::exit(1);
});
let content = fs::read_to_string(config.file_name).expect("读取文件错误");
println!("the content is: \n {}",content);
let result = get_result_collect(&config.query,&content);
println!("result is {:#?}",result)
}
struct Config{
query:String,
file_name:String,
}
impl Config {
fn new(args:&[String]) ->Result<Config,&'static str> {
if args.len() < 3 {
return Err("当前命令行数量缺乏!");
}
let query =args[1].clone();
let file_name =args[2].clone();
Ok(Config{
query,
file_name,
})
}
}
pub fn get_result_collect<'a >(query:&str,contents:&'a str) ->Vec<&'a str>{
contents.lines().filter(|line| line.contains(query)).collect()
}
#[cfg(test)]
mod test{
use super::*;
#[test]
fn test_demo() {
}
}