main.rs 1.81 KB
//
// Loops examples.
//
// Georg Hopp <georg@steffers.org>
//
// Copyright © 2019 Georg Hopp
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//

fn main() {
    // It seams that to use loops this way you absolutely need a mutable.
    // If I build it with a normal type and try to shadow it within the loop
    // the outer variable is always used as input for the shadow, thus it is
    // always the same.... that really sucks.
    let mut counter = 0;

    let result = loop {
        counter = counter + 1;
        if counter == 10 {
            break counter * 2;
        }
    };

    println!("The result is {}", result);

    // The same is true with «while» ... which again sucks.
    let mut number = 3;

    while number != 0 {
        println!("{}!", number);
        number = number - 1;
    }

    println!("LIFTOFF!!!");

    // apart from beeing frustrated about the above facts... lets continue.
    let a = [10, 20, 30, 40, 50];
    let mut index = 0;

    while index < 5 {
        println!("the value is: {}", a[index]);
        index = index + 1;
    }

    for element in a.iter() {
        println!("the value is still: {}", element);
    }

    for number in (1..4).rev() {
        println!("for {}!", number);
    }
}