Remember the infinite while loop? Well, there is also such a thing called the infinite for loop. In Rust, a for loop over a range always ends by itself, but a loop built like a classic for loop (set up a variable, check a condition, update the variable) can still run forever.
Here is an example:
let mut i = 0;
while i < 10 {
println!("{}", i);
i -= 1;
i += 1; // the "update" step of a classic for loop
}
This is what happens during this loop:
0. Creates and initializes a variable i = 0
1. First iteration:
a. Is i < 10 true? <=> Is 0 < 10 true? Yes.
b. Run the code inside {}:
1) println!("{}", i); => Output: 0
2) i -= 1; => i becomes -1
c. i += 1; => i becomes 0 again
2. Second iteration:
a. Is i < 10 true? <=> Is 0 < 10 true? Yes.
b. Run the code inside {}:
1) println!("{}", i); => Output: 0
2) i -= 1; => i becomes -1
c. i += 1; => i becomes 0 again
3. Third iteration:
a. Is i < 10 true? <=> Is 0 < 10 true? Yes.
b. Run the code inside {}:
1) println!("{}", i); => Output: 0
2) i -= 1; => i becomes -1
c. i += 1; => i becomes 0 again
...
This program will never terminate as i will always have value 0 and thus the condition i < 10 will always be satisfied.
The program would basically print 0 forever never exiting the loop.
Assignment
Follow the Coding Tutorial and let's practice with infinite for loops!
Hint
Look at the examples above if you get stuck.
Free plan: 30 tutor messages. PRO is unlimited.
