// // 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); } }