Skip to content

Commit 7fdc64d

Browse files
committed
---
yaml --- r: 222863 b: refs/heads/master c: ffa2121 h: refs/heads/master i: 222861: 83456a3 222859: e13f39c 222855: 101ac23 222847: 4c632a0 v: v3
1 parent 99b43d6 commit 7fdc64d

File tree

8 files changed

+207
-226
lines changed

8 files changed

+207
-226
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 0860b29b6a4cc4c150ed2dfb245320527d9a7cc0
2+
refs/heads/master: ffa21217d2aa41475dd5d14c39f09e17277cf14c
33
refs/heads/snap-stage3: a5c12f4e39d32af3c951b66bd2839bc0b5a1125b
44
refs/heads/try: b53c0f93eedcdedd4fd89bccc5a3a09d1c5cd23e
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

trunk/src/doc/trpl/SUMMARY.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
* [Primitive Types](primitive-types.md)
2727
* [Comments](comments.md)
2828
* [if](if.md)
29-
* [Loops](loops.md)
29+
* [for loops](for-loops.md)
30+
* [while loops](while-loops.md)
3031
* [Ownership](ownership.md)
3132
* [References and Borrowing](references-and-borrowing.md)
3233
* [Lifetimes](lifetimes.md)

trunk/src/doc/trpl/choosing-your-guarantees.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,6 @@ scope.
308308

309309
Both of these provide safe shared mutability across threads, however they are prone to deadlocks.
310310
Some level of additional protocol safety can be obtained via the type system.
311-
312311
#### Costs
313312

314313
These use internal atomic-like types to maintain the locks, which are pretty costly (they can block

trunk/src/doc/trpl/for-loops.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
% for Loops
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:
6+
7+
```c
8+
for (x = 0; x < 10; x++) {
9+
printf( "%d\n", x );
10+
}
11+
```
12+
13+
Instead, it looks like this:
14+
15+
```rust
16+
for x in 0..10 {
17+
println!("{}", x); // x: i32
18+
}
19+
```
20+
21+
In slightly more abstract terms,
22+
23+
```ignore
24+
for var in expression {
25+
code
26+
}
27+
```
28+
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
36+
37+
In our example, `0..10` is an expression that takes a start and an end position,
38+
and gives an iterator over those values. The upper bound is exclusive, though,
39+
so our loop will print `0` through `9`, not `10`.
40+
41+
Rust does not have the “C-style” `for` loop on purpose. Manually controlling
42+
each element of the loop is complicated and error prone, even for experienced C
43+
developers.
44+
45+
# Enumerate
46+
47+
When you need to keep track of how many times you already looped, you can use the `.enumerate()` function.
48+
49+
## On ranges:
50+
51+
```rust
52+
for (i,j) in (5..10).enumerate() {
53+
println!("i = {} and j = {}", i, j);
54+
}
55+
```
56+
57+
Outputs:
58+
59+
```text
60+
i = 0 and j = 5
61+
i = 1 and j = 6
62+
i = 2 and j = 7
63+
i = 3 and j = 8
64+
i = 4 and j = 9
65+
```
66+
67+
Don't forget to add the parentheses around the range.
68+
69+
## On iterators:
70+
71+
```rust
72+
# let lines = "hello\nworld".lines();
73+
for (linenumber, line) in lines.enumerate() {
74+
println!("{}: {}", linenumber, line);
75+
}
76+
```
77+
78+
Outputs:
79+
80+
```text
81+
0: Content of line one
82+
1: Content of line two
83+
2: Content of line tree
84+
3: Content of line four
85+
```

trunk/src/doc/trpl/loops.md

Lines changed: 0 additions & 209 deletions
This file was deleted.

0 commit comments

Comments
 (0)