grrs의 첫 구현
지난 챕터에서 커맨드라인 인자를 다룬 뒤
우리는 입력 데이터를 얻었고,
실제 프로그램 작성을 시작할 수 있게 되었습니다.
지금은 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);
}
}
마무리
여러분의 코드는 이제 아래와 같아야 합니다:
#![allow(unused)]
use clap::Parser;
/// 파일에서 패턴을 찾고 패턴을 포함한 라인을 보여준다.
#[derive(Parser)]
struct Cli {
/// 찾을 패턴
pattern: String,
/// 읽을 파일 경로
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
으로 잘 동작하는지 확인해 보세요!