TODO

Step 4

使用 Config 结构体来替代 (query, filename) 元组

注意所有使用 query 和 filename 值的地方都要用 config.query 和 config.filename 代替, 并用 clone() 暂时解决 Config 结构体中的所有权冲突。



查看提示

建立 Config 结构体如下:

fn main() {
    let args: Vec<String> = env::args().collect();

    // 后续这里的 : Config 类型注释会省略掉,自己心里要明白这里是省略了类型  
    let config: Config = parse_config(&args);  

    // --snip--
}

struct Config {
    query: String,
    filename: String,
}

    // --snip--


Step4 Answer
fn main() {
    let args: Vec<String> = env::args().collect();

    let config = parse_config(&args);

    println!("Searching for {}", config.query);
    println!("In file {}", config.filename);

    let contents = fs::read_to_string(config.filename)
        .expect("Something went wrong reading the file");

    // --snip--
}

struct Config {
    query: String,
    filename: String,
}

fn parse_config(args: &[String]) -> Config {
    let query = args[1].clone();
    let filename = args[2].clone();

    Config { query, filename }
}