CLI I/O Map

입력은 한곳에서 모으고, 오류는 표준 오류로 분리한다

프로젝트형 CLI는 인수, 파일, 표준 입력을 먼저 판정하고 성공 출력과 진단 출력을 마지막에 분리하면 흐름이 단순해진다.

1 환경 읽기 env::args, 설정값을 모은다
2 입력 선택 인수, 파일, stdin 우선순위를 정한다
3 본문 확보 read_to_string 결과를 확인한다
4 검색 실행 반복자로 라인 단위 결과를 만든다
5 채널 분리 println!eprintln!을 나눈다
결정 지점
성공 경로
실패 경로
검색어와 파일명 CLI 인수에서 읽기
Ok: 설정 구조체 생성 Config::build(args)
Err: 사용법을 stderr로 안내 process::exit(1)
파일 본문 디스크에서 문자열로 읽기
Ok: 검색 함수에 전달 fs::read_to_string(path)
Err: 파일명과 원인을 출력 eprintln!("Problem...")
표준 입력 대화형 입력이 필요한 경우
Ok: 버퍼를 파싱해 사용 stdin().read_line(&mut s)
Err: 재입력 또는 종료 선택 Result<usize>
출력 채널 사용자가 파이프할 수 있게 분리
stdout: 검색 결과만 출력 println!("{line}")
stderr: 진단 메시지 출력 eprintln!("{err}")
핵심 규칙 Result는 경계에서 처리하고, 라이브러리 함수는 오류를 돌려주며, 실행 파일만 사용자 메시지와 종료 코드를 결정한다.