### What it does
Checks for `match`  or `if let` expressions producing a
`bool` that could be written using `matches!`

### Why is this bad?
Readability and needless complexity.

### Known problems
This lint falsely triggers, if there are arms with
`cfg` attributes that remove an arm evaluating to `false`.

### Example
```
let x = Some(5);

let a = match x {
    Some(0) => true,
    _ => false,
};

let a = if let Some(0) = x {
    true
} else {
    false
};
```

Use instead:
```
let x = Some(5);
let a = matches!(x, Some(0));
```