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
应该能正常工作了!