라벨이 iterator인 게시물 표시

Rust의 반복문

Java나 C++ 같은 언어에서는 조건 반복문for-each 반복문에 같은 for 키워드를 사용한다. 하지만, Rust는 조건 반복문에는 while 키워드을 for-each 반복문에는 for 키워드를 사용한다.Rust는 여기에 하나의 반복문을 더 제공한다. loop 반복문이다. 이는 while true라고 쓰는 것과 같이 같은 코드를 무한히 실행한다. 실제로 무한 반복이 필요한 경우에도 사용되고, 반복문의 조건을 하나의 표현식으로 서술하기 힘들어 break문으로 뺄 때에도 사용된다.하지만 loop가 while true와 완전히 같은 코드는 아니다. loop는 while문과 다르게 그 자체로 값을 가진다. break문 뒤에 값을 적으면 이 값이 반복문 전체의 값이 된다. 그렇다면 다른 반복문은 값을 가지지 않는데 loop문만 값을 가지는 이유는 무엇일까?일반적으로 반복문이 끝나는 데는 두 가지 조건이 있다. 주어진 조건이 끝나는 것과 break문을 만나는 것이다. 평범한 반복문에서도 같은 문법을 써서 break문을 만났을 때의 값은 정하게 할 수는 있지만, 조건이 끝나 반복문이 종료되는 경우 값을 지정할 수 없다. 그래서 일반적으로 반복문은 값을 가지지 않는다. 하지만 loop문은 종료 조건이 없기 때문에 끝나기 위해서는 항상 break문을 만나야 한다. 이런 특징 덕분에 loop는 다른 반복문과 다르게 구문 자체가 값을 가질 수 있다.Rust에서는 for-each 반복문을 for-in 반복문이라고 부른다. 실제로 for value in values라고 코드를 작성하기 때문이다. 그렇다면 여기서 values에 들어갈 수 있는 값은 어떤 값일까? 내가 만든 타입을 for-in 반복문에 사용하고 싶으면 어떻게 해야 할까?값을 순회할 수 있는 타입은 모두 for-in 반복문에 사용할 수 있다. 따라서 무엇을 for-in 반복문에 사용할 수 있는지 알고 싶다면 Rust가 생각하는 순회할 수 있는 값이 무엇인지 알아야 한다.Iterator는 순회할 수 있는 타입을 …