| #### Note: this error code is no longer emitted by the compiler. |
| |
| Mutable borrows are not allowed in pattern guards, because matching cannot have |
| side effects. Side effects could alter the matched object or the environment |
| on which the match depends in such a way, that the match would not be |
| exhaustive. For instance, the following would not match any arm if mutable |
| borrows were allowed: |
| |
| ```compile_fail,E0596 |
| match Some(()) { |
| None => { }, |
| option if option.take().is_none() => { |
| /* impossible, option is `Some` */ |
| }, |
| Some(_) => { } // When the previous match failed, the option became `None`. |
| } |
| ``` |