First implementation - Command Line Applications in Rust
Exercise for the reader: This is not the best implementation: It will read the whole file into memory – however large the file may be. Find a way to optimize it! (One idea might be to use a BufReader instead of read_to_string().)
とのことだったのでBuffReader使いました
書いたもの
#![allow(unused)]
use clap::Parser;
use std::io::BufReader;
use std::fs::File;
use std::io::BufRead;
/// 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
#[clap(parse(from_os_str))]
path: std::path::PathBuf,
}
fn main() {
let args = Cli::parse();
let content = File::open(&args.path).expect("could not read file");
let mut reader = BufReader::new(content);
let mut line = String::new();
for line in reader.lines() {
if line.as_ref().unwrap().contains(&args.pattern) {
println!("{}", line.unwrap());
}
}
println!("path = {:?}", args.path);
println!("pattern = {:?}", args.pattern);
}
その他
もっといいやり方あるかも
Rustに詳しい私のアンチの方がいたらご教示ください。