grrs 的第一个实现

完成命令行参数章节后,我们获取了输入参数,现在我们可以开始编写实现工具了。 当前我们的 main 函数中仅有一行:

let args = Cli::from_args();

首先让我们打开指定的文件。

let content = std::fs::read_to_string(&args.path)
    .expect("could not read file");

现在,让我们遍历所有行并打印出包含匹配字符串的每一行:

for line in content.lines() {
    if line.contains(&args.pattern) {
        println!("{}", line);
    }
}

Wrapping up

你的代码现在看起来应该如此:

#![allow(unused)]

use structopt::StructOpt;

/// Search for a pattern in a file and display the lines that contain it.
#[derive(StructOpt)]
struct Cli {
    /// The pattern to look for
    pattern: String,
    /// The path to the file to read
    #[structopt(parse(from_os_str))]
    path: std::path::PathBuf,
}

fn main() {

let args = Cli::from_args();
let content = std::fs::read_to_string(&args.path)
    .expect("could not read file");

for line in content.lines() {
    if line.contains(&args.pattern) {
        println!("{}", line);
    }
}

}

来试试:cargo run -- main src/main.rs 应该能正常工作了!