From b36551b0e2cecaef8908cb11b63aff1256a377f5 Mon Sep 17 00:00:00 2001 From: Kieran Hunt Date: Sun, 26 Jul 2015 19:39:32 +0200 Subject: [PATCH] Adding docs for loops and loop labels. --- src/doc/trpl/SUMMARY.md | 1 + src/doc/trpl/infinite-loops.md | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/doc/trpl/infinite-loops.md diff --git a/src/doc/trpl/SUMMARY.md b/src/doc/trpl/SUMMARY.md index 85f0019276ee..c2afae714764 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 000000000000..948249e924cf --- /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.