grrs 的第一个实现

在上一章关于命令行参数之后,我们有了输入数据,现在可以开始编写我们实际的工具了。我们的 main 函数现在只包含这一行代码

    let args = Cli::parse();

(我们删除了 println 语句,我们只是暂时将其放在那里以证明我们的程序按预期工作。)

让我们从打开我们获得的文件开始。

    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);
        }
    }

总结

您的代码现在应该看起来像这样

use clap::Parser;

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

fn main() {
    let args = Cli::parse();
    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 现在应该可以工作了!