반복 원천
컬렉션을 빌릴지, 가변으로 바꿀지, 소유권째 넘길지 먼저 결정한다.
API 선택 기준반복자는 map과 filter를 붙이는 순간 실행되지 않는다. iter, iter_mut, into_iter가 빌림과 소유권을 어떻게 넘기고, collect나 for가 언제 소비하는지까지 봐야 한다.
컬렉션을 빌릴지, 가변으로 바꿀지, 소유권째 넘길지 먼저 결정한다.
API 선택 기준map, filter, take 같은 adapter는 새 iterator를 만들 뿐 즉시 계산하지 않는다.
lazycollect, sum, count, for, next가 호출될 때 실제 순회가 진행된다.
여기서 비용 발생into_iter로 이동한 값은 다시 사용할 수 없고, next는 iterator 내부 위치를 전진시킨다.
부분 소비 한계let it = nums.iter().map(|x| x + 1); // no work yet
let v: Vec<_> = it.collect(); // iteration happens