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
现在应该可以工作了!