From 9f758ac04ae2ebedb47b66f25127259080133914 Mon Sep 17 00:00:00 2001 From: David Wood Date: Sun, 30 Sep 2018 23:18:33 +0200 Subject: [PATCH] Mention a solution for eRFC 2947 ambiguity. --- src/expressions/if-expr.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/expressions/if-expr.md b/src/expressions/if-expr.md index 415737de6..0395d7b00 100644 --- a/src/expressions/if-expr.md +++ b/src/expressions/if-expr.md @@ -114,6 +114,22 @@ match EXPR { The expression cannot be a [lazy boolean operator expression][_LazyBooleanOperatorExpression_]. Use of a lazy boolean operator is ambiguous with a planned feature change of the language (the implementation of if-let chains - see [eRFC 2947][_eRFCIfLetChain_]). +When lazy boolean operator expression is desired, this can be achieved +by using parenthesis as below: + +```rust,ignore +// Before... +if let PAT = EXPR && EXPR { .. } + +// After... +if let PAT = ( EXPR && EXPR ) { .. } + +// Before... +if let PAT = EXPR || EXPR { .. } + +// After... +if let PAT = ( EXPR || EXPR ) { .. } +``` [_Expression_]: expressions.html [_BlockExpression_]: expressions/block-expr.html