본문 바로가기

언어/Rust

[ Rust ] loop - loop문으로 코드를 반복 수행하기

반응형

loop 문은 러스트에서 무한 루프를 생성하는 기본 반복문입니다. 이 반복문은 명시적으로 중단(break)되거나 프로그램이 종료되지 않는 한 계속 실행됩니다. 다른 언어의 while (true)와 비슷하지만, 러스트에서는 더욱 간결하고 강력한 기능을 제공합니다.


특징

  1. 무한 반복: 명시적으로 break를 호출하지 않으면 루프가 종료되지 않습니다.
  2. 반복 중단: break를 사용해 루프를 종료할 수 있습니다.
  3. 값 반환: loop는 표현식으로 사용할 수 있으며, break를 통해 값을 반환할 수 있습니다.
  4. 성능 최적화: 러스트는 loop을 효율적으로 실행하도록 설계되었습니다.

기본 구조

loop {
    // 반복 실행되는 코드
    if condition {
        break;
    }
}

예제 1: 기본적인 무한 루프

fn main() {
    let mut counter = 0;

    loop {
        counter += 1;
        println!("반복 횟수: {}", counter);

        if counter == 5 {
            println!("반복을 종료합니다.");
            break;
        }
    }
}

실행 결과

반복 횟수: 1
반복 횟수: 2
반복 횟수: 3
반복 횟수: 4
반복 횟수: 5
반복을 종료합니다.

예제 2: loop에서 값 반환하기

break 뒤에 값을 지정하여 루프가 종료될 때 값을 반환할 수 있습니다.

fn main() {
    let mut counter = 0;

    let result = loop {
        counter += 1;

        if counter == 10 {
            break counter * 2; // 루프가 종료되며 20을 반환
        }
    };

    println!("결과 값: {}", result);
}

실행 결과

결과 값: 20

예제 3: 중첩된 loop와 라벨 사용

중첩된 루프에서 특정 루프를 종료하기 위해 라벨을 사용할 수 있습니다.

fn main() {
    let mut outer_counter = 0;

    'outer: loop {
        let mut inner_counter = 0;

        println!("외부 루프: {}", outer_counter);

        loop {
            println!("  내부 루프: {}", inner_counter);
            inner_counter += 1;

            if inner_counter == 3 {
                break; // 내부 루프 종료
            }
        }

        outer_counter += 1;

        if outer_counter == 2 {
            break 'outer; // 외부 루프 종료
        }
    }

    println!("루프가 모두 종료되었습니다.");
}

실행 결과

외부 루프: 0
  내부 루프: 0
  내부 루프: 1
  내부 루프: 2
외부 루프: 1
  내부 루프: 0
  내부 루프: 1
  내부 루프: 2
루프가 모두 종료되었습니다.

예제 4: loop와 match 활용

loopmatch를 결합하여 다양한 조건을 처리할 수 있습니다.

fn main() {
    let mut counter = 0;

    loop {
        counter += 1;

        match counter {
            3 => println!("3번 반복 중!"),
            5 => {
                println!("5번 반복 후 루프 종료.");
                break;
            }
            _ => println!("반복 중: {}", counter),
        }
    }
}

실행 결과

반복 중: 1
반복 중: 2
3번 반복 중!
반복 중: 4
5번 반복 후 루프 종료.

요약

  • loop는 단순하지만 유연하고 강력한 반복문입니다.
  • breakreturn을 조합하여 다양한 패턴을 구현할 수 있습니다.
  • 값 반환, 중첩 루프 제어, 조건 기반 종료 등 실용적인 기능을 제공합니다.

러스트의 loop는 안전성과 성능을 고려한 반복문으로, 복잡한 흐름 제어도 간결하게 처리할 수 있습니다.

반응형