query와 file_path처럼 함께 다니는 설정 값을 묶습니다.
main이 커지지 않도록 Config, run, lib.rs, Result 반환을 도입해 CLI 프로젝트의 책임을 나눕니다.
query와 file_path처럼 함께 다니는 설정 값을 묶습니다.
인수 파싱 실패를 Result로 돌려 호출자가 처리하게 합니다.
파일 읽기와 검색 실행을 담당하는 작업 함수입니다.
오류 메시지는 표준 에러로 보내 정상 출력과 분리합니다.
관련 변수를 구조체와 생성 함수로 모읍니다.
프로그램 로직을 run과 라이브러리 쪽으로 분리합니다.
panic! 대신 Result를 반환해 main에서 종료 방식을 결정합니다.
이 리팩터링은 코드를 예쁘게 나누는 작업이 아니라, 오류가 어디서 생기고 어디서 사용자에게 전달되는지 분명히 하는 과정입니다.