English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Rust는 유연한 조건 문 외에도 루프 구조의 설계도 매우 성숙합니다. 이 점은 경험 많은 개발자라면 느낄 수 있습니다.
while 루프는 가장 유형적인 조건 문 루프입니다:
fn main() { let mut number = 1; while number != 4 println!("{}", number); number += 1; } println!("EXIT"); }
실행 결과:
1 2 3 EXIT
Rust 언어는 이 튜토리얼을 작성한 날짜까지 do는 없습니다-while의 사용법이지만 do는 예약어로 지정되어 있으며, 향후 버전에서 사용될 수 있습니다.
C 언어에서 for 루프는 삼항 표현식을 사용하여 루프를 제어하지만, Rust에서는 이러한 사용법이 없으며, 대신 while 루프를 사용해야 합니다:
int i; for(i = 0; i < 10; i++) { // 루프 본문 }
let mut i = 0; while i < 10 // 루프 본문 i += 1; }
for 루프는 가장 일반적인 루프 구조로, 일반적으로 선형 데이터 구조(예: 배열)를 순회하는 데 사용됩니다. 배열을 순회하는 for 루프:
fn main() { 10 2 3 4 5 for i in a.iter() { println!("값이: {}", i); } }
실행 결과:
값이: 10 값이: 20 값이: 30 값이: 40 값이: 50
fn main() { 10 2 3 4 5 5 println!("a[{}] = {} } }
실행 결과:
a[0] = 10 a[1] = 20 a[2] = 30 a[3] = 40 a[4] = 50
경험 많은 개발자는 이런 상황을 몇 번은 겪어보았을 것입니다: 루프가 시작과 끝에서 루프를 계속할지 여부를 판단할 수 없으며, 루프 본체 중간에 루프를 제어해야 하는 경우가 많습니다. 이런 경우, 우리는 자주 while (true) 루프에서 중간에 루프를 탈출하는 작업을 구현합니다.
Rust 언어에는 원시적인 무한 루프 구조가 있습니다 - loop:
fn main() { let s = ['R', 'U', 'N', 'O', 'O', 'B']; let mut i = 0; loop { let ch = s[i]; if ch == 'O' { break; } println!("'{}'", ch); i += 1; } }
실행 결과:
'R' 'U' 'N'
loop 루프는 break 키워드를 사용하여 전체 루프를 탈출하고 외부에 반환 값을 제공할 수 있습니다. 이는 loop와 같은 루프가 자주 검색 도구로 사용되기 때문에 매우 유용한 설계입니다. 결과를 찾으면当然 그 결과를 반환해야 합니다:
fn main() { let s = ['R', 'U', 'N', 'O', 'O', 'B']; let mut i = 0; let location = loop { let ch = s[i]; if ch == 'O' { break i; } i += 1; }; println!("'O'의 인덱스는 {}", location); }
실행 결과:
'O'의 인덱스는 3