diff options
| -rw-r--r-- | src/doc/trpl/SUMMARY.md | 1 | ||||
| -rw-r--r-- | src/doc/trpl/infinite-loops.md | 40 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/doc/trpl/SUMMARY.md b/src/doc/trpl/SUMMARY.md index 85f0019276e..c2afae71476 100644 --- a/src/doc/trpl/SUMMARY.md +++ b/src/doc/trpl/SUMMARY.md @@ -26,6 +26,7 @@ * [Primitive Types](primitive-types.md) * [Comments](comments.md) * [if](if.md) + * [infinite loops](infinite-loops.md) * [for loops](for-loops.md) * [while loops](while-loops.md) * [Ownership](ownership.md) diff --git a/src/doc/trpl/infinite-loops.md b/src/doc/trpl/infinite-loops.md new file mode 100644 index 00000000000..948249e924c --- /dev/null +++ b/src/doc/trpl/infinite-loops.md @@ -0,0 +1,40 @@ +% infinite loops + +The infinite `loop` is the simplest form of `loop` available in Rust. Using the keyword `loop`, Rust provides a way to loop until a `break` or `return` is issued. Rust's infinite `loop`s look like this: + +``` +loop { + println!("Loop forever!"); +} +``` + +Leaving a infinite `loop` can be achieved using a break statement as follows: + +``` +let mut i = 0; +loop { + if i == 10 { + break; + } + println!("Loop number {}", i); + i = i + 1; +} +``` + +## Loop labels + +Labels can be assigned to `loop`s to so that, in the case of nested `loop`s, an outer `loop` may be left early when certain criteria are met in an inner `loop`. + +``` +let mut i = 0; +'outer: loop { + 'inner: loop { + if i == 10 { + break 'outer; + } + i = i + 1; + } +} +``` + +In the above example, the inner `loop` is able to cause the outer `loop` to stop. |
