diff options
| author | Jakub Wieczorek <jakub@jakub.cc> | 2014-09-29 22:40:26 +0200 |
|---|---|---|
| committer | Jakub Wieczorek <jakub@jakub.cc> | 2014-09-30 18:54:03 +0200 |
| commit | e53f4a6b94623076a912df0c770c591d710c5de0 (patch) | |
| tree | ff14599837abada41d64c4aaa2bbf7964dd15260 | |
| parent | 13e00e4a3d18802ca6407e59935be9f2c33ec061 (diff) | |
| download | rust-e53f4a6b94623076a912df0c770c591d710c5de0.tar.gz rust-e53f4a6b94623076a912df0c770c591d710c5de0.zip | |
Add `if let` to the reference
| -rw-r--r-- | src/doc/reference.md | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/doc/reference.md b/src/doc/reference.md index 0500088bbdc..14fc1d8d73d 100644 --- a/src/doc/reference.md +++ b/src/doc/reference.md @@ -3231,7 +3231,7 @@ for i in range(0u, 256) { if_expr : "if" no_struct_literal_expr '{' block '}' else_tail ? ; -else_tail : "else" [ if_expr +else_tail : "else" [ if_expr | if_let_expr | '{' block '}' ] ; ``` @@ -3436,6 +3436,19 @@ let message = match maybe_digit { }; ``` +### If let expressions + +```{.ebnf .gram} +if_let_expr : "if" "let" pat '=' expr '{' block '}' + else_tail ? ; +else_tail : "else" [ if_expr | if_let_expr | '{' block '}' ] ; +``` + +An `if let` expression is semantically identical to an `if` expression but in place +of a condition expression it expects a refutable let statement. If the value of the +expression on the right hand side of the let statement matches the pattern, the corresponding +block will execute, otherwise flow proceeds to the first `else` block that follows. + ### Return expressions ```{.ebnf .gram} |
