loop

이번에는 러스트의 특별하고 강력한 문법인 loop 를 알아보겠습니다. 먼저 loop 중 무한 루프의 경우는 파이썬에서 아래와 같이 구현 가능합니다. 중간에 x의 값이 5가 되면 break를 통해서 루프를 탈출할 수 있습니다.

x = 0
while True:
    x += 1
    if x == 5:
        break
    print(x, end=",")

실행 결과

0,1,2,3,4,

loop는 파이썬의 무한 루프와 동일한 역할을 합니다. 따라서 루프를 종료하는 break 에 해당하는 조건문이 있어야 루프를 종료하고 다음으로 진행할 수 있습니다.

fn main() {
    let mut x = 0;
    loop {
        x += 1;
        if x == 5 {
            break;
        }
        print!("{},", x);
    }
}

실행 결과

0,1,2,3,4,

loop는 조건이 만족되면 루프를 탈출하는데, 이때 특정 값을 리턴할 수 있습니다. break 뒤에 리턴할 값을 넣어주면 됩니다. x가 5가 됐을 때 x를 리턴하도록 코드를 고치면 다음과 같습니다.

fn main() {
    let mut x = 0;
    let y = loop {
        x += 1;
        if x == 5 {
            break x;
        }
        print!("{},", x);
    };

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

실행 결과

1,2,3,4,5

루프 안에서 1부터 4까지가 출력되고, 그 뒤에 y의 값 5가 출력됩니다.