English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Rust 루프

Rust는 유연한 조건 문 외에도 루프 구조의 설계도 매우 성숙합니다. 이 점은 경험 많은 개발자라면 느낄 수 있습니다.

while 루프

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 루프를 사용해야 합니다:

C 언어

int i; 
for(i = 0; i < 10; i++) { 
    // 루프 본문
}

Rust

let mut i = 0; 
while i < 10  
    // 루프 본문 
    i += 1; 
}

for 루프

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

loop 루프

경험 많은 개발자는 이런 상황을 몇 번은 겪어보았을 것입니다: 루프가 시작과 끝에서 루프를 계속할지 여부를 판단할 수 없으며, 루프 본체 중간에 루프를 제어해야 하는 경우가 많습니다. 이런 경우, 우리는 자주 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