Rust 반복문

Rust 반복문

Rust에서 반복문을 위해 loop, while, for 를 사용한다.

loop 반복

loop는 가장 단순한 반복에 사용되는데, 블럭 안의 코드를 무한히 반복하게 한다. 필요한 경우 loop 블럭 안에 조건문을 사용하여 반복을 멈추는 코드를 넣을 수 있다. 만약 무한 반복될 경우 Ctrl+C 같은 중단키를 사용하여 실행을 중지할 수 있다.

아래 예제는 loop를 사용하여 1 ~ 10까지 숫자를 출력하는 코드이다. 루프를 돌며 변수 i를 하나씩 증가시키고, 10보다 크면 break 키워드를 써서 루프를 빠져 나오고 있다.

fn main() {
    let mut i = 1;

    loop {
        if i > 10 {
            break;
        }

        println!("{}", i);
        
        i += 1;
    }
}

while 반복

while문은 while 뒤의 조건식이 참일 경우에만 반복을 계속하는 루프이다. 아래 예제는 while문을 사용하여 1부터 100까지 더하는 코드를 예시한 것이다.

fn main() {
    let mut sum = 0;
    let mut i = 1;

    while i <= 100 {
        sum += i;        
        i = i + 1;
    }

    println!("Sum of 1~100: {}", sum);
}

for 반복

for문은 배열이나 벡터와 같은 컬렉션(collection)으로부터 각 요소를 하나씩 가져와 루프를 돌며 처리할 때 흔히 사용된다. 아래 예제는 for문을 사용하여 배열에 있는 모든 요소를 출력하는 예이다.

fn main() {
    let arr = [1,2,3,4,5];

    for i in arr {
        println!("{}", i);
    }
}

참고로, 아래는 for문을 사용하여 1부터 100까지를 더하는 코드를 예시한 것이다. 여기서 1..101 은 1부터 100까지의 숫자들의 집합을 표현한 것으로, Range (..) 앞의 숫자 1은 시작되는 숫자를 가리키고, 뒤의 숫자 101은 마지막 숫자(100)보다 하나 큰 숫자를 가리킨다.

fn main() {
    let mut sum = 0;
    for i in 1..101 {
        sum += i;
    }
    println!("Sum of 1~100: {}", sum);
}

break와 continue

루프 안에서 코드의 흐름을 바꾸기 위해 break 혹은 continue를 사용할 수 있다. break는 루프를 빠져나오는 명령이고, continue는 루프 안에서 continue 다음에 있는 모든 코드를 실행하지 않고(skip 하고), 다시 루프의 처음으로 돌아가는 명령이다.

아래 예제는 10 이하의 짝수를 더해서 반으로 나눈 값을 출력하는 코드이다. 여기서 continue가 있는 if 문은 홀수인지를 체크해서 홀수이면 loop 블럭의 나머지 부분 (즉, sum을 더하는 부분과 10인지 체크하는 if 블럭)을 Skip하고, loop의 처음으로 돌아가는 코드이다.

fn main() {
    let mut i = 0;
    let mut sum = 0;

    let result = loop {
        i += 1;

        if i % 2 == 1 {
            continue;
        }

        sum += i;

        if i == 10 {
            break sum / 2
        }
    };

    println!("{}", result);
}

위 코드에서 "break sum/2" 부분은 loop를 빠져 나오면서(break 하면서) sum/2 값을 리턴하는 코드이다. Rust는 break 뒤에 이렇게 Expression을 넣어 값을 리턴할 수 있다. 이렇게 리턴된 값은 변수 result에 저장된다.

This site is not affiliated with or endorsed by the Rust Foundation or Rust Project.