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

Loop no Rust

Além das estruturas de controle condicional flexíveis, o Rust também tem um design maduro para estruturas de loop. Isso deve ser perceptível para desenvolvedores experientes.

loop while

O loop while é o tipo mais típico de loop de语句 condicional:

fn main() {
    let mut number = 1; 
    while number != 4  
        println!("{}", number); 
        number += 1; 
    } 
    println!("SAIR"); 
}

Resultado da Execução:

1
2
3
SAIR

A linguagem Rust ainda não tem 'do' até a data de elaboração deste tutorial.-Uso do while, mas 'do' é um palavra reservada, talvez versões futuras a utilizem.

No linguagem C, o loop for usa a expressão ternária para controlar o loop, mas no Rust não há essa utilização, é necessário usar o loop while para substituir:

Linguagem C

int i; 
for (i = 0; i < 10; i++) { 
    // corpo do loop
}

Rust

let mut i = 0; 
while i < 10  
    // corpo do loop 
    i += 1; 
}

loop for

O loop for é a estrutura de loop mais comum, frequentemente usada para percorrer uma estrutura de dados linear (por exemplo, um array). O loop for percorre o array:

fn main() { 
    10 2 3 4 5 
    for i in a.iter() { 
        println!("O valor é : {}", i); 
    } 
}

Resultado da Execução:

O valor é : 10
O valor é : 20
O valor é : 30
O valor é : 40
O valor é : 50

fn main() { 
10 2 3 4 5 
    5  
        println!("a[{}] = {} 
    } 
}

Resultado da Execução:

a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50

Loop

Desenvolvedores experientes certamente já encontraram várias vezes uma situação em que um loop não pode determinar se deve continuar no início e no final, mas deve controlar o loop no meio. Se encontrar essa situação, frequentemente implementamos a operação de saída do loop no corpo do while (true).

O idioma Rust tem uma estrutura de loop infinito nativa - 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; 
    } 
}

Resultado da Execução:

'R' 
'U' 
'N'

O loop pode ser usado para sair do loop inteiro com a palavra-chave break, semelhante ao return. Este é um design muito inteligente, pois o loop é frequentemente usado como ferramenta de busca, e se encontrar algo, claro, deve entregar o resultado:

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 índice de 'O' é {}", location); 
}

Resultado da Execução:

 O índice de 'O' é 3