1
Fork 0

Added doc on keyword break

This commit is contained in:
Yves Dorfsman 2019-10-17 23:07:29 -06:00
parent fa0f7d0080
commit 52c771377f

View file

@ -33,9 +33,71 @@ mod as_keyword { }
//
/// Exit early from a loop.
///
/// The documentation for this keyword is [not yet complete]. Pull requests welcome!
/// When `break` is encountered, execution of the associated loop body is
/// immediately terminated.
///
/// ```rust
/// let mut last = 0;
///
/// for x in 1..100 {
/// if x > 12 {
/// break;
/// }
/// last = x;
/// }
///
/// assert_eq!(last, 12);
/// println!("{}", last);
/// ```
///
/// A break expression is normally associated with the innermost loop enclosing the
/// `break` but a label can be used to specify which enclosing loop is affected.
///
///```rust
/// 'outer: for i in 1..=5 {
/// println!("outer iteration (i): {}", i);
///
/// 'inner: for j in 1..=200 {
/// println!(" inner iteration (j): {}", j);
/// if j >= 3 {
/// // breaks from inner loop, let's outer loop continue.
/// break;
/// }
/// if i >= 2 {
/// // breaks from outer loop, and directly to "Bye".
/// break 'outer;
/// }
/// }
/// }
/// println!("Bye.");
///```
///
/// When associated with `loop`, but not with any other kind of loop expression,
/// `break` can return a value. When no value is specified, `break;` returns `()`.
/// Every `break` within a loop must return the same type.
///
/// ```rust
/// let (mut a, mut b) = (1, 1);
/// let result = loop {
/// if b > 10 {
/// break b;
/// }
/// let c = a + b;
/// a = b;
/// b = c;
/// };
/// // first number in Fibonacci sequence over 10:
/// assert_eq!(result, 13);
/// println!("{}", result);
/// ```
///
/// For more details consult the [Reference on "break expression"] and the [Reference on "break and
/// loop values"].
///
/// [Reference on "break expression"]: ../reference/expressions/loop-expr.html#break-expressions
/// [Reference on "break and loop values"]:
/// ../reference/expressions/loop-expr.html#break-and-loop-values
///
/// [not yet complete]: https://github.com/rust-lang/rust/issues/34601
mod break_keyword { }
#[doc(keyword = "const")]