### 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)); ```