첫 호출은 프로그램명을 버리고, query와 file_path가 없으면
Err("Didn't get a query string") 또는
Err("Didn't get a file path")로 빠집니다.
Iterator refactor
minigrep를 반복자로 정리하는 순서
minigrep 리팩터링은 std::env::args()를 소비하는
Config::build, contents.lines() 검색,
IGNORE_CASE 분기를 함께 정리하는 작업입니다.
IGNORE_CASE가 설정되어 있으면
search_case_insensitive, 없으면 search를
호출합니다.
line.contains(query) 조건만 남기고, 대소문자 무시는
query와 line을 소문자로 비교합니다.
반환값은 Vec<&str>라서 contents보다 오래 살
수 없고, 검색 결과 문자열을 새로 복사하지 않습니다.