读取文件哈。
但分成了lib.rs和main.rs。
按文档上不行,自己胡乱的调通,但原理不熟悉。
里面的套路代码还是蛮多的。
src/lib.rs
use std::io::Read; use std::error::Error; pub struct Config { pub query: String, pub filename: String, } impl Config { pub fn new(args: &[String]) -> Result<Config, &'static str> { if args.len() < 3 { return Err("not enough arguments."); } let query = args[1].clone(); let filename = args[2].clone(); Ok(Config { query, filename }) } } pub fn run(config: Config) -> Result<(), Box<Error>> { let mut file = std::fs::File::open(config.filename)?; let mut contents = String::new(); file.read_to_string(&mut contents)?; println!("With text:\n{}", contents); Ok(()) }
src/main.rs
use std::env; use std::process; extern crate minigrep; fn main() { let args: Vec<String> = env::args().collect(); let config = minigrep::Config::new(&args).unwrap_or_else(|err| { println!("Problem parsing arguments: {}", err); process::exit(1); }); println!("Search for {}", config.query); println!("In file {}", config.filename); if let Err(e) = minigrep::run(config) { println!("Application error: {}", e); process::exit(1); }; }