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에서 메시지를 정한다.