Rust Nozioni di base


Esempio

Ci sono 4 costrutti di looping in Rust. Tutti gli esempi di seguito producono lo stesso risultato.

Cicli infiniti

let mut x = 0;
loop {
    if x > 3 { break; }
    println!("{}", x);
    x += 1;
}

Mentre cicli

let mut x = 0;
while x <= 3 {
    println!("{}", x);
    x += 1;
}

Vedi anche: Qual è la differenza tra loop e while true ?

Cicli combinati con schema

Questi sono a volte noti come while let cicli per brevità.

let mut x = Some(0);
while let Some(v) = x {
    println!("{}", v);
    x = if v < 3 { Some(v + 1) }
        else     { None };
}

Questo è equivalente a una match all'interno di un blocco di loop :

let mut x = Some(0);
loop {
    match x {
        Some(v) => {
            println!("{}", v);
            x = if v < 3 { Some(v + 1) }
                else     { None };
        }
        _       => break,
    }
}

Per loop

In Rust, for loop può essere utilizzato solo con un oggetto "iterable" (cioè dovrebbe implementare IntoIterator ).

for x in 0..4 {
    println!("{}", x);
}

Questo è equivalente al seguente snippet che coinvolge while let :

let mut iter = (0..4).into_iter();
while let Some(v) = iter.next() {
    println!("{}", v);
}

Nota: 0..4 restituisce un oggetto Range che implementa già il tratto Iterator . Pertanto into_iter() non è necessaria, ma è tenuto solo per illustrare ciò che for fa. Per un approfondimento, vedi la documentazione ufficiale for Loops e IntoIterator .

Vedi anche: Iterators