about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSteve Klabnik <steve@steveklabnik.com>2015-06-09 14:32:10 -0400
committerSteve Klabnik <steve@steveklabnik.com>2015-06-09 15:40:09 -0400
commita0b08f387b5f383fb4a135a4cd68f0d3842743d2 (patch)
tree09a0d8fe7546859a252b3544f25a0e1a37aa8127
parent7b0f2af27f18b6c81fe6a2faab0ba96e0da3bba5 (diff)
Explain interaction with if and | in patterns
Fixes #26012
-rw-r--r--src/doc/trpl/patterns.md25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/doc/trpl/patterns.md b/src/doc/trpl/patterns.md
index 93df0f19e8e..0f356d75abc 100644
--- a/src/doc/trpl/patterns.md
+++ b/src/doc/trpl/patterns.md
@@ -154,6 +154,31 @@ match x {
 
 This prints `Got an int!`.
 
+If you’re using `if` with multiple patterns, the `if` applies to both sides:
+
+```rust
+let x = 4;
+let y = false;
+
+match x {
+    4 | 5 if y => println!("yes"),
+    _ => println!("no"),
+}
+```
+
+This prints `no`, because the `if` applies to the whole of `4 | 5`, and not to
+just the `5`, In other words, the the precedence of `if` behaves like this:
+
+```text
+(4 | 5) if y => ...
+```
+
+not this:
+
+```text
+4 | (5 if y) => ...
+```
+
 # ref and ref mut
 
 If you want to get a [reference][ref], use the `ref` keyword: