Loops

Caso queiramos repetir alguma instrução, várias e várias vezes, o que fazemos? Escrevemos o mesmo código inúmeras vezes? Claro que não, para fazermos isso utilizamos loops.

Em Rust temos 3 tipos de loops for, while e loop, todos de fácil utilização, todos com suas peculiaridades, mas no fim utilizamos para a mesma coisa, repetir coisas.

Loop FOR

O loop for, provavelmente é o mais utilizado, não necessariamente do modo que iremos aprender agora, mas isso vem depois, agora iremos focar no básico de sua utilização.

Sua declaração é feita da seguinte maneira for variavel in de..até

fn main() {
    for i in 0..10 {
        println!("{}", i);
    }
}

Agora temos um loop for que vai de 0 até 9, pode não ser muito intuitivo logo de início, lendo o código parece que iria ir de 0 até 10, todavia sempre sera valor até - 1

Loop WHILE

O loop while é uma estrutura de repetição que se repete por tempo indeterminado, diferente do loop for ela ira se repetir infinitamente enquanto a condição for verdadeira.

Sua declaração é while condicao

fn main() {
    let mut i = 0;
    while i <= 10 {
        println!("{}", i);
        i += 1;
    }
}

Agora temos um loop whileque ira repetir enquanto i for menor ou igual a 10, a partir do momento que esta condição não for satisfeita, o loop ira ser encerrado.

Em alguns momentos queremos loops infinitos, o que você faria? Utilizaria um while true? Não é necessário no Rust temos...

Loop "loop"

Quando queremos ter um loop infinito podemos utilizar a palavra reservada loop, esta palavra cria um bloco que se repete infinitamente

fn main() {
    loop {
        println!("Rust4Noobs");
    }
}

Agora temos um bloco que irá escrever "Rust4Noobs" infinitamente.

Palavra break

Nem sempre queremos que um loop execute completamente antes de encerrar, para isso temos a palavra break ela tem a função de parar uma estrutura de repetição. Serve tanto para blocos for, while e loop

fn main() {
    for i in 1..100 {
        println!("{}", i);
        if i % 3 == 0 && i % 9 == 0 {
            println!("Parou!");
            break;
        }
    }

    let mut i = 0;
    while i <= 100 {
        println!("{}", i);
        if i == 10 {
            println!("Parou!");
            break;
        }
        i+= 1;

    }

    i = 0;

    loop {
        println!("{}", i);
        if i == 10 {
            println!("Parou!");
            break;
        }
        i+= 1;
    }
}

Palavra continue

Utilizamos a palavra continue quando queremos pular uma parte do loop, por exemplo. Temos um loop de 0 a 99 onde queremos escrever no console todos os números, exceto os múltiplos de 4 e 6 ao mesmo tempo. Podemos usar um continue para isso.

fn main() {
    for i in 0..100 {
        if i % 4 == 0 && i % 6 == 0 {
            continue;
        }
        println!("Numero atual {}", i);
    }
}

Claro isso não se aplica somente ao for, é possível utilizar com while e com loop também