I/O Refactor Map

인수 파싱과 검색 루프를 반복자 흐름으로 접는다

`clone`을 없애는 변경과 `search`를 체인으로 바꾸는 변경은 모두 소유권을 더 분명하게 만드는 리팩터링입니다.

1

명령행 인수

벡터로 모은 뒤 빌리는 대신 `env::args()` 반복자를 그대로 전달합니다.

Config::build(env::args())
2

설정 만들기

`next`로 프로그램 이름을 건너뛰고 query와 file_path의 소유권을 받습니다.

Iterator<Item = String>
3

검색 결과

가변 벡터에 직접 push하는 대신 조건과 수집을 체인으로 표현합니다.

lines().filter().collect()
영역
이전 신호
반복자식 신호
입력
슬라이스와 `clone`
소유한 `String`이 순서대로 이동
오류
길이 검사와 인덱스
`None`일 때 즉시 `Err` 반환
검색
빈 벡터와 `push`
조건을 통과한 줄만 `collect`