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으로 잘 동작하는지 확인해 보세요!