I/O 개선
반복자를 소유하면 clone 없이 인수를 Config로 이동할 수 있다
슬라이스를 빌려 인덱싱하던 코드를 반복자 기반으로 바꾸면 query와 file_path가 복제되지 않고 필요한 위치로 이동한다.
before
args 슬라이스를 빌려 인덱스로 꺼내고 clone한다.
after
env args 반복자의 소유권을 받아 next로 소비한다.
result
부족한 인수는 Result Err로 호출부에 전달한다.
env args
반복자 생성
명령행 인수가 순서대로 흐르는 소스가 된다.
next
프로그램 이름 소비
사용하지 않는 첫 값은 버리고 query 위치로 이동한다.
move
query와 file_path 이동
String 값이 Config 필드로 직접 들어간다.
Result
부족한 인수 처리
값이 없으면 panic 대신 설명 가능한 Err를 반환한다.
관점
슬라이스 방식
반복자 방식
소유권
빌린 값이므로 Config가 소유하려면 clone이 필요하다.
반복자가 String을 넘겨주므로 필드로 이동할 수 있다.
의도
args 1번과 2번이라는 위치 지식이 드러난다.
필요한 값을 순서대로 소비하는 흐름이 드러난다.
실패
길이 검사와 인덱싱이 따로 보인다.
next 실패를 Result Err로 바로 연결한다.
clone 제거
소유권을 받을 수 있다면 복제 대신 이동을 선택한다.
인덱싱 감소
반복자는 순서대로 소비되어 의도가 더 읽기 쉽다.
오류 경로
인수가 부족한 상황은 호출부가 처리할 수 있게 Err로 남긴다.