mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 13:13:34 +00:00
e1d13c34b0
Downgrade match_bool to pedantic I don't quite buy the justification in https://rust-lang.github.io/rust-clippy/. The justification is: > It makes the code less readable. In the Rust codebases I've worked in, I have found people were comfortable using `match bool` (selectively) to make code more readable. For example, initializing struct fields is a place where the indentation of `match` can work better than the indentation of `if`: ```rust let _ = Struct { v: { ... }, w: match doing_w { true => ..., false => ..., }, x: Nested { c: ..., b: ..., a: ..., }, y: if doing_y { ... } else { // :( ... }, z: ..., }; ``` Or sometimes people prefer something a bit less pithy than `if` when the meaning of the bool doesn't read off clearly from the condition: ```rust if set.insert(...) { ... // ??? } else { ... } match set.insert(...) { // set.insert returns false if already present false => ..., true => ..., } ``` Or `match` can be a better fit when the bool is playing the role more of a value than a branch condition: ```rust impl ErrorCodes { pub fn from(b: bool) -> Self { match b { true => ErrorCodes::Yes, false => ErrorCodes::No, } } } ``` And then there's plain old it's-1-line-shorter, which means we get 25% more content on a screen when stacking a sequence of conditions: ```rust let old_noun = match old_binding.is_import() { true => "import", false => "definition", }; let new_participle = match new_binding.is_import() { true => "imported", false => "defined", }; ``` Bottom line is I think this lint fits the bill better as a pedantic lint; I don't think linting on this by default is justified. changelog: Remove match_bool from default set of enabled lints |
||
---|---|---|
.. | ||
auxiliary | ||
cargo | ||
ui | ||
ui-toml | ||
compile-test.rs | ||
dogfood.rs | ||
fmt.rs | ||
integration.rs | ||
missing-test-files.rs | ||
versioncheck.rs |