Module 4 • Lesson 20

Loops: loop, while, for

📚 8 min read💻 Free Course🦀 nixus.pro

Three Loop Types

fn main() {
    // loop: infinite, break with optional value
    let mut i = 0;
    let result = loop {
        i += 1;
        if i == 10 { break i * 2; }
    };
    println!("loop result: {}", result); // 20

    // while: condition-based
    let mut n = 5;
    while n > 0 { print!("{} ", n); n -= 1; }
    println!();

    // for: iterator-based (most common)
    for i in 0..5 { print!("{} ", i); }    // 0 1 2 3 4
    println!();
    for i in 0..=5 { print!("{} ", i); }   // 0 1 2 3 4 5
    println!();
    for i in (0..10).step_by(2) { print!("{} ", i); } // 0 2 4 6 8
    println!();
    for i in (0..5).rev() { print!("{} ", i); } // 4 3 2 1 0
    println!();

    // enumerate
    let fruits = ["apple", "banana", "cherry"];
    for (i, fruit) in fruits.iter().enumerate() {
        println!("{}: {}", i, fruit);
    }

    // Loop labels for nested loops
    'outer: for i in 0..5 {
        for j in 0..5 {
            if i + j > 5 { break 'outer; }
            print!("({},{}) ", i, j);
        }
    }
    println!();

    // while let
    let mut stack = vec![1, 2, 3];
    while let Some(top) = stack.pop() { print!("{} ", top); }
    println!();
}

🎯 Practice

  1. Use loop to implement Newton's square root: x = (x + n/x) / 2 until |x^2 - n| < 1e-9
  2. Use for with enumerate to find the index of the minimum element in a Vec<i32>
  3. Use nested labeled loops to build and print a multiplication table (1-10)

🎉 Key Takeaways