|
1 | 1 | % for Loops |
2 | 2 |
|
3 | | -The `for` loop is used to loop a particular number of times. Rust's `for` loops |
4 | | -work a bit differently than in other systems languages, however. Rust's `for` |
5 | | -loop doesn't look like this "C-style" `for` loop: |
| 3 | +The `for` loop is used to loop a particular number of times. Rust’s `for` loops |
| 4 | +work a bit differently than in other systems languages, however. Rust’s `for` |
| 5 | +loop doesn’t look like this “C-style” `for` loop: |
6 | 6 |
|
7 | | -```{c} |
| 7 | +```c |
8 | 8 | for (x = 0; x < 10; x++) { |
9 | 9 | printf( "%d\n", x ); |
10 | 10 | } |
11 | 11 | ``` |
12 | 12 |
|
13 | 13 | Instead, it looks like this: |
14 | 14 |
|
15 | | -```{rust} |
| 15 | +```rust |
16 | 16 | for x in 0..10 { |
17 | 17 | println!("{}", x); // x: i32 |
18 | 18 | } |
19 | 19 | ``` |
20 | 20 |
|
21 | 21 | In slightly more abstract terms, |
22 | 22 |
|
23 | | -```{ignore} |
| 23 | +```ignore |
24 | 24 | for var in expression { |
25 | 25 | code |
26 | 26 | } |
27 | 27 | ``` |
28 | 28 |
|
29 | | -The expression is an iterator, which we will discuss in more depth later in the |
30 | | -guide. The iterator gives back a series of elements. Each element is one |
31 | | -iteration of the loop. That value is then bound to the name `var`, which is |
32 | | -valid for the loop body. Once the body is over, the next value is fetched from |
33 | | -the iterator, and we loop another time. When there are no more values, the |
34 | | -`for` loop is over. |
| 29 | +The expression is an [iterator][iterator]. The iterator gives back a series of |
| 30 | +elements. Each element is one iteration of the loop. That value is then bound |
| 31 | +to the name `var`, which is valid for the loop body. Once the body is over, the |
| 32 | +next value is fetched from the iterator, and we loop another time. When there |
| 33 | +are no more values, the `for` loop is over. |
| 34 | + |
| 35 | +[iterator]: iterators.html |
35 | 36 |
|
36 | 37 | In our example, `0..10` is an expression that takes a start and an end position, |
37 | 38 | and gives an iterator over those values. The upper bound is exclusive, though, |
38 | 39 | so our loop will print `0` through `9`, not `10`. |
39 | 40 |
|
40 | | -Rust does not have the "C-style" `for` loop on purpose. Manually controlling |
| 41 | +Rust does not have the “C-style” `for` loop on purpose. Manually controlling |
41 | 42 | each element of the loop is complicated and error prone, even for experienced C |
42 | 43 | developers. |
43 | | - |
44 | | -We'll talk more about `for` when we cover *iterators*, later in the Guide. |
0 commit comments