read checkpoint
파일 읽기는 성공했지만 main의 책임은 이미 넘쳤다
poem.txt를 문자열로 읽는 코드는 동작한다. 문제는 인수
파싱, I/O, 출력, 실패 처리가 한 함수에 몰린다는 점이다.
I/O 경계
fs::read_to_string(file_path)는 실패 가능한 작업이므로
이후 구조는 Result 중심으로 바뀌어야 한다.
| 현재 코드 | 하는 일 | 실습상 장점 | 다음 압력 |
|---|---|---|---|
args[index] |
query와 file_path를 직접 꺼낸다. | 초기 흐름을 빠르게 확인한다. | 인수 부족 시 친절한 오류가 없다. |
read_to_string |
파일 전체를 String으로 읽는다. | 작은 텍스트 파일 예제에 적합하다. | I/O 실패를 호출자에게 전파해야 한다. |
expect |
실패하면 즉시 종료한다. | 처음에는 실패 지점을 빠르게 본다. | 파일 없음, 권한 없음이 같은 패닉으로 보인다. |
println! |
읽은 내용을 확인 출력한다. | 경로와 읽기 동작을 검증한다. | 검색 결과 출력과 임시 확인을 분리해야 한다. |
Config
검색어와 파일 경로를 이름 있는 설정 값으로 묶는다.
build
인수 부족을 panic이 아니라 오류 값으로 돌려준다.
run
파일 읽기와 검색 로직을 main 밖의 실행 함수로 옮긴다.
Result
물음표 연산자로 I/O 실패를 전파하고 main에서 메시지를
정한다.