반응형
loop
문은 러스트에서 무한 루프를 생성하는 기본 반복문입니다. 이 반복문은 명시적으로 중단(break
)되거나 프로그램이 종료되지 않는 한 계속 실행됩니다. 다른 언어의 while (true)
와 비슷하지만, 러스트에서는 더욱 간결하고 강력한 기능을 제공합니다.
특징
- 무한 반복: 명시적으로
break
를 호출하지 않으면 루프가 종료되지 않습니다. - 반복 중단:
break
를 사용해 루프를 종료할 수 있습니다. - 값 반환:
loop
는 표현식으로 사용할 수 있으며,break
를 통해 값을 반환할 수 있습니다. - 성능 최적화: 러스트는
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 활용
loop
와 match
를 결합하여 다양한 조건을 처리할 수 있습니다.
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
는 단순하지만 유연하고 강력한 반복문입니다.break
와return
을 조합하여 다양한 패턴을 구현할 수 있습니다.- 값 반환, 중첩 루프 제어, 조건 기반 종료 등 실용적인 기능을 제공합니다.
러스트의 loop
는 안전성과 성능을 고려한 반복문으로, 복잡한 흐름 제어도 간결하게 처리할 수 있습니다.
반응형
'언어 > Rust' 카테고리의 다른 글
[ Rust ] for - for 문으로 코드 반복 수행하기 (0) | 2024.11.16 |
---|---|
[ Rust ] while - while 문으로 코드 반복 수행하기 (1) | 2024.11.16 |
[ Rust ] if - if문으로 흐름제어 하기 (0) | 2024.11.16 |
[ Rust ] cargo --doc - 주석으로 프로젝트 문서 작성하기 (0) | 2024.10.23 |
[ Rust ] //, /**/, ///, //! - 주석 달기 (0) | 2024.10.23 |