반응형
러스트의 while
문은 조건이 true
인 동안 특정 코드 블록을 반복 실행하는 조건 기반 루프입니다. loop
와 달리, while
은 반복을 시작하기 전에 조건을 평가합니다. 조건이 처음부터 false
라면 한 번도 실행되지 않을 수 있습니다.
기본 구조
while condition {
// condition이 true인 동안 실행되는 코드
}
condition
은 반드시bool
타입이어야 합니다.- 조건이
false
가 되면 루프가 종료됩니다.
예제 1: 기본적인 while
루프
fn main() {
let mut count = 0;
while count < 5 {
println!("현재 카운트: {}", count);
count += 1;
}
println!("루프 종료 후 카운트: {}", count);
}
실행 결과
현재 카운트: 0
현재 카운트: 1
현재 카운트: 2
현재 카운트: 3
현재 카운트: 4
루프 종료 후 카운트: 5
예제 2: 사용자 입력을 이용한 while
루프
use std::io;
fn main() {
let mut input = String::new();
println!("'exit'을 입력하면 종료됩니다.");
while input.trim() != "exit" {
input.clear();
println!("문자열을 입력하세요:");
io::stdin()
.read_line(&mut input)
.expect("입력 오류");
println!("입력한 내용: {}", input.trim());
}
println!("프로그램이 종료되었습니다.");
}
실행 결과
'exit'을 입력하면 종료됩니다.
문자열을 입력하세요:
hello
입력한 내용: hello
문자열을 입력하세요:
exit
입력한 내용: exit
프로그램이 종료되었습니다.
예제 3: 조건에 따라 리스트 순회하기
while
을 사용하여 벡터(리스트) 내의 요소를 순회하면서 조건에 따라 작업할 수 있습니다.
fn main() {
let numbers = vec![10, 20, 30, 40, 50];
let mut index = 0;
while index < numbers.len() {
println!("인덱스 {}: 값 {}", index, numbers[index]);
// 특정 조건에서 루프 종료
if numbers[index] == 30 {
println!("30을 찾았습니다. 루프를 종료합니다.");
break;
}
index += 1;
}
}
실행 결과
인덱스 0: 값 10
인덱스 1: 값 20
인덱스 2: 값 30
30을 찾았습니다. 루프를 종료합니다.
예제 4: 중첩 while
루프
중첩된 while
루프를 활용하여 2차원 데이터나 복잡한 조건을 처리할 수 있습니다.
fn main() {
let mut outer = 0;
while outer < 3 {
let mut inner = 0;
while inner < 3 {
println!("외부: {}, 내부: {}", outer, inner);
inner += 1;
}
outer += 1;
}
}
실행 결과
외부: 0, 내부: 0
외부: 0, 내부: 1
외부: 0, 내부: 2
외부: 1, 내부: 0
외부: 1, 내부: 1
외부: 1, 내부: 2
외부: 2, 내부: 0
외부: 2, 내부: 1
외부: 2, 내부: 2
예제 5: while
에서 벡터 요소 제거
while
을 사용하여 조건을 만족하는 벡터의 요소를 제거할 수도 있습니다.
fn main() {
let mut numbers = vec![1, 2, 3, 4, 5];
while !numbers.is_empty() {
let removed = numbers.pop().unwrap();
println!("제거된 값: {}, 남은 리스트: {:?}", removed, numbers);
}
println!("벡터가 비어있습니다.");
}
실행 결과
제거된 값: 5, 남은 리스트: [1, 2, 3, 4]
제거된 값: 4, 남은 리스트: [1, 2, 3]
제거된 값: 3, 남은 리스트: [1, 2]
제거된 값: 2, 남은 리스트: [1]
제거된 값: 1, 남은 리스트: []
벡터가 비어있습니다.
요약
while
은 조건에 따라 반복 실행되는 루프입니다.- 조건이
false
가 되면 루프가 종료됩니다. - 벡터 순회, 사용자 입력 처리, 조건 기반 데이터 조작 등 다양한 상황에서 활용할 수 있습니다.
while
루프는 러스트의 다른 반복문(loop
, for
)과 함께 사용하면 더욱 강력한 제어 흐름을 구현할 수 있습니다.
반응형
'언어 > Rust' 카테고리의 다른 글
[ Rust ] for - for 문으로 코드 반복 수행하기 (0) | 2024.11.16 |
---|---|
[ Rust ] loop - loop문으로 코드를 반복 수행하기 (1) | 2024.11.16 |
[ Rust ] if - if문으로 흐름제어 하기 (0) | 2024.11.16 |
[ Rust ] cargo --doc - 주석으로 프로젝트 문서 작성하기 (0) | 2024.10.23 |
[ Rust ] //, /**/, ///, //! - 주석 달기 (0) | 2024.10.23 |