|
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