Clippy lints / Pedantic
Clippy lint · Pedantic · checked with Clippy 0.1.99
clippy::collapsible_else_if: Checks for collapsible else { if
What it meansChecks for collapsible else { if ... } expressions that can be collapsed to else if .... It is in the pedantic group and off by default.
Does it matter?
Each if-statement adds one level of nesting, which makes code look more complex than it really is.
Stricter lints with some false positives. Off by default; opt in with clippy::pedantic.
How to fix it
Clippy can fix this one for you: run cargo clippy --fix (add --allow-dirty if you have uncommitted changes). Review the diff before you commit.
Flagged
if x {
…
} else {
if y {
…
}
}
Write this instead
if x {
…
} else if y {
…
}
Turn it off, or on
It is off by default. To use it, set it to warn or deny:
Whole crate (Cargo.toml)
[lints.clippy]
collapsible_else_if = "warn"In code
#![warn(clippy::collapsible_else_if)]One run
cargo clippy -- -W clippy::collapsible-else-ifThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Settings in clippy.toml
lint-commented-code: Whether collapsible if and else if chains are linted if they contain comments inside the parts that would be collapsed.
Clippy's own documentation
What it does
Checks for collapsible else { if ... } expressions
that can be collapsed to else if ....
Why is this bad?
Each if-statement adds one level of nesting, which
makes code look more complex than it really is.
Example
if x {
…
} else {
if y {
…
}
}
Should be written:
if x {
…
} else if y {
…
}
Configuration
-
lint-commented-code: Whether collapsibleifandelse ifchains are linted if they contain comments inside the parts that would be collapsed.(default:
false)
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- too_many_linesChecks for functions with a large amount of lines
- missing_errors_docChecks the doc comments of publicly visible functions that return a Result type and warns if there is no # Errors section
- must_use_candidateChecks for public functions that have no #[must_use] attribute, but return something not already marked must-use, have no mutable arg and mutate no statics
- cast_sign_losscasting `i8` to `u64` may lose the sign of the value
- checked_conversionsChecks for explicit bounds checking when casting
- cloned_instead_of_copiedused `cloned` where `copied` could be used instead
- comparison_chainChecks comparison chains written with if that can be rewritten with match and cmp
- copy_iteratorChecks for types that implement Copy as well as Iterator
- decimal_bitwise_operandsusing decimal literal for bitwise operation
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::too_many_linesChecks for functions with a large amount of linesRead it next →Did this answer your question?