about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKieran Hunt <kieran.hunt92@gmail.com>2015-07-26 19:39:32 +0200
committerKieran Hunt <kieran.hunt92@gmail.com>2015-07-26 19:39:32 +0200
commitb36551b0e2cecaef8908cb11b63aff1256a377f5 (patch)
tree83775853c1256c043376ddaf70c669b90916ba28
parenta5c12f4e39d32af3c951b66bd2839bc0b5a1125b (diff)
downloadrust-b36551b0e2cecaef8908cb11b63aff1256a377f5.tar.gz
rust-b36551b0e2cecaef8908cb11b63aff1256a377f5.zip
Adding docs for loops and loop labels.
-rw-r--r--src/doc/trpl/SUMMARY.md1
-rw-r--r--src/doc/trpl/infinite-loops.md40
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.