]> git.lizzy.rs Git - rust.git/commitdiff
Adding docs for loops and loop labels.
authorKieran Hunt <kieran.hunt92@gmail.com>
Sun, 26 Jul 2015 17:39:32 +0000 (19:39 +0200)
committerKieran Hunt <kieran.hunt92@gmail.com>
Sun, 26 Jul 2015 17:39:32 +0000 (19:39 +0200)
src/doc/trpl/SUMMARY.md
src/doc/trpl/infinite-loops.md [new file with mode: 0644]

index 85f0019276eefe36cb61e3fc957eb3e0dba220a8..c2afae7147646010f90dff382c0c70c5a8752c85 100644 (file)
@@ -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 (file)
index 0000000..948249e
--- /dev/null
@@ -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.